GVKun编程网logo

Java使用Selenium WebDriver测试元素是否存在?(selenium java 判断元素是否存在)

18

如果您对Java使用SeleniumWebDriver测试元素是否存在?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Java使用SeleniumWebDriver测试元素

如果您对Java使用Selenium WebDriver测试元素是否存在?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Java使用Selenium WebDriver测试元素是否存在?的详细内容,我们还将为您解答selenium java 判断元素是否存在的相关问题,并且为您提供关于c# – 使用Selenium Webdriver测试元素是否聚焦、css – 如何使用Selenium WebDriver,Java按文本选择Web元素、JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测、Selenium Webdriver C#如何测试元素不存在?的有价值信息。

本文目录一览:

Java使用Selenium WebDriver测试元素是否存在?(selenium java 判断元素是否存在)

Java使用Selenium WebDriver测试元素是否存在?(selenium java 判断元素是否存在)

有没有一种方法可以测试元素是否存在?任何findElement方法都将以异常结尾,但这不是我想要的,因为它可能是某个元素不存在并且没关系,这不是测试失败,因此异常不能成为解决方案。

我发现了这篇文章:Selenium c#Webdriver:等待元素出现, 但这是针对C#的,我不是很擅长。谁能将代码翻译成Java?抱歉,我在Eclipse中进行了尝试,但我没有将其正确地插入Java代码中。

这是代码:

public static class WebDriverExtensions{    public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds){        if (timeoutInSeconds > 0){            var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));            return wait.Until(drv => drv.FindElement(by));        }        return driver.FindElement(by);    }}

答案1

小编典典

使用findElements代替findElement

findElements 如果找不到匹配的元素,则返回一个空列表,而不是一个异常。

要检查是否存在某个元素,可以尝试执行此操作

Boolean isPresent = driver.findElements(By.yourLocator).size() > 0

如果找到至少一个元素,则返回true;否则,返回false。

c# – 使用Selenium Webdriver测试元素是否聚焦

c# – 使用Selenium Webdriver测试元素是否聚焦

我真的很惊讶,我找不到互联网上的参考,使用Selenium Webdriver来测试元素焦点.

我想检查什么时候尝试提交表单,强制字段错过,焦点移动到空字段.但是,我看不到任何使用WebDriver API的方法.

我将能够使用一个JavascriptExecutor找到关注的元素.但阅读FAQ使我认为必须有一些方法来执行检查使用驱动程序本身.

感谢任何帮助.

解决方法

driver.switchTo().activeElement()将返回当前关注的WebElement.对于WebElement来说,平等是很好的定义的,所以你可以调用element.equals(driver.switchTo().activeElement()).

调用稍微误导的命名的driver.switchTo().activeElement()实际上并不切换焦点,也不是driver.findElement(),所以你不需要switchTo().defaultContent()之后;其实这样做可能会模糊现在的元素.

css – 如何使用Selenium WebDriver,Java按文本选择Web元素

css – 如何使用Selenium WebDriver,Java按文本选择Web元素

我需要在网页上找到以下元素
<div>noreply@somedomain.com</div>

我正在使用Java编写Selenium WebDriver.
需要这个元素的确切CSS选择器才能将它与driver.findElement(By.cssSelector(the-selector).click命令一起使用.
div [class =’b-datalist__item__addr’]选择器不够好,因为我必须根据noreply@somedomain.com搜索不是链接的文本,所以我不能使用findElement(By.linkText())命令.

解决方法

Css不允许您进行基于文本的搜索. xpath是唯一的选择.
//div[contains(text(),'noreply@somedomain.com')]

JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测

JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测

我正在尝试使用selenium和铬在网站中自动化一个非常基本的任务,但是以某种方式网站会检测到铬是由selenium驱动的,并阻止每个请求。我怀疑该网站是否依赖像这样的公开DOM变量https://stackoverflow.com/a/41904453/648236来检测selenium驱动的浏览器。

我的问题是,有没有办法使navigator.webdriver标志为假?我愿意尝试修改后重新尝试编译selenium源,但是似乎无法在存储库中的任何地方找到NavigatorAutomationInformation源https://github.com/SeleniumHQ/selenium

任何帮助深表感谢

PS:我还从https://w3c.github.io/webdriver/#interface尝试了以下操作

Object.defineProperty(navigator, ''webdriver'', {    get: () => false,  });

但是它仅在初始页面加载后更新属性。我认为网站会在执行脚本之前检测到变量。

答案1

小编典典

从当前的实现开始,一种理想的访问网页而不被检测到的方法是使用ChromeOptions()该类向以下参数添加几个参数:

排除enable-automation开关的集合
关掉 useAutomationExtension
通过以下实例ChromeOptions

Java示例:

System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");ChromeOptions options = new ChromeOptions();options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));options.setExperimentalOption("useAutomationExtension", false);WebDriver driver =  new ChromeDriver(options);driver.get("https://www.google.com/");

Python范例

from selenium import webdriveroptions = webdriver.ChromeOptions()options.add_experimental_option("excludeSwitches", ["enable-automation"])options.add_experimental_option(''useAutomationExtension'', False)driver = webdriver.Chrome(options=options, executable_path=r''C:\path\to\chromedriver.exe'')driver.get("https://www.google.com/")

Selenium Webdriver C#如何测试元素不存在?

Selenium Webdriver C#如何测试元素不存在?

填写必填字段时可以找到此元素:

IWebElement e1SK = Driver.Instance.FindElement(By.XPath(baseXPathSendKeys + "div[2]/textarea"));

如果未填写必填字段,则不应存在上述元素.

该测试抛出异常:

OpenQA.Selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互

这是我需要创建一个方法还是比这更简单?如果你能展示一个例子,它会有所帮助,我还是C#和Selenium Webdriver的新手.

我已经读过,我可以使用一个名为findwebelements的东西,然后检查以确保结果的长度为零,但我也不确定如何实现.

解决方法

这是解决问题的直接方法:

if (Driver.Instance.FindElements(By.XPath(baseXPathSendKeys + "div[2]/textarea")).Count != 0)
{
    // exists
}
else
{
    // doesn't exist
}

您可以创建一个方法Exists(By)来测试元素:

public bool Exists(By by)
{
    if (Driver.Instance.FindElements(by).Count != 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

当你想测试一些东西时调用它:

By by = By.XPath(baseXPathSendKeys + "div[2]/textarea")
if (Exists(by))
{
    // success
}

今天关于Java使用Selenium WebDriver测试元素是否存在?selenium java 判断元素是否存在的讲解已经结束,谢谢您的阅读,如果想了解更多关于c# – 使用Selenium Webdriver测试元素是否聚焦、css – 如何使用Selenium WebDriver,Java按文本选择Web元素、JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测、Selenium Webdriver C#如何测试元素不存在?的相关知识,请在本站搜索。

本文标签: