我的查询是查找页面中缺少动态元素(更多微调器)。
为了解决这个问题,我们应该使用 driver.findElements(By by) 方法,该方法将间接等待,直到找不到元素时驱动程序的隐式等待时间。
我的驱动程序的隐式超时是 15 秒。
尽管减少驱动程序的隐式时间对于解决很有用,Selenium Webdriver 中是否有任何替代 driver.findElements 方法?
提前感谢!
你可以WebDriverWait
相同的。它将根据您通过的时间等待
WebDriverWait wait = new WebDriverWait(driver, 5);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
或
WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));
有关更多详细信息,请参阅以下链接:-
http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp
您可以执行以下操作...
尝试从第一名开始
等待代码是java的,但它与C#非常相似/接近,从中获取参考
您可以每次检查您的元素是否存在于您的 HTML DOM 中,以防止脚本出错/失败。 如下所示:-
if (driver.findElements(By."YOUR Locator")).size() != 0) {
YOUR FIRST Working code
System.out.println("element exists");
}
else{
System.out.println("element is not exists");
}
希望它能帮助你:)
您可以使用下面提到的方法来等待元素,而无需修改隐式时间
IWebDriver driver = new FirefoxDriver();
driver.Url = "<URL>";
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(15));
IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.Id("<ELEMENTID>"));
});
使用元素的 id 而不是 <ELEMENTID>
和 url 进行"<URL>"