【问题标题】:Selenium Webdriver not waiting for elementSelenium Webdriver 不等待元素
【发布时间】:2016-08-30 12:24:52
【问题描述】:

这是我为 firefox 浏览器初始化的 selenium web 驱动程序。

driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);

即使我给出了隐式等待硒不等待元素。它立即抛出未找到的异常。如果我输入Thread.sleep,那么它工作正常,没有任何问题。但是现在将Thread.sleep 放在测试用例包含的任何地方都比实际测试用例代码包含更多Thread.sleep。谁能建议我这样做的正确方法?

【问题讨论】:

  • 为什么不使用ExplicitWait 而使用WebDriverWait??
  • 虽然首选方法是通过显式等待,但上述方法应该可以正常工作,您能否在公共 url 上复制此问题?
  • @MrunalGosar 我在公共 url 中没有睡觉就尝试了同样的方法。工作正常。在我的本地它抛出错误
  • @MrunalGosar 即使在登录页面中,按钮也被快速点击,但没有发生操作。如果我让睡眠 5 秒,然后单击它工作正常。是dojo.button
  • 您能否建立一个带有示例应用程序的 github 项目来复制您的问题..否则没有其他方法可以找到您的情况出了什么问题

标签: java selenium selenium-webdriver


【解决方案1】:

在这种情况下,您应该使用ExplicitWait 来等待特定元素可见或出现,因为让线程休眠不是一个好习惯。我会推荐使用:

WebDriver driver wait = new WebDriverWait(driver, "time here");
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xPath)));

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 2016-12-25
    • 1970-01-01
    • 2018-02-19
    • 2013-08-06
    • 2016-07-28
    • 2016-06-14
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多