如何在设置的时间跨度内查找缺少元素,并且不修改 Selenium Webdriver 中驱动程序的隐式时间



我的查询是查找页面中缺少动态元素(更多微调器)。

为了解决这个问题,我们应该使用 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>"

最新更新