如果您对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 判断元素是否存在)
- c# – 使用Selenium Webdriver测试元素是否聚焦
- css – 如何使用Selenium WebDriver,Java按文本选择Web元素
- JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测
- Selenium Webdriver C#如何测试元素不存在?
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测试元素是否聚焦
我想检查什么时候尝试提交表单,强制字段错过,焦点移动到空字段.但是,我看不到任何使用WebDriver API的方法.
我将能够使用一个JavascriptExecutor找到关注的元素.但阅读FAQ使我认为必须有一些方法来执行检查使用驱动程序本身.
感谢任何帮助.
解决方法
调用稍微误导的命名的driver.switchTo().activeElement()实际上并不切换焦点,也不是driver.findElement(),所以你不需要switchTo().defaultContent()之后;其实这样做可能会模糊现在的元素.
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())命令.
解决方法
//div[contains(text(),'noreply@somedomain.com')]
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#如何测试元素不存在?
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#如何测试元素不存在?的相关知识,请在本站搜索。
本文标签: