【问题标题】:Selenium webdriver - implicit wait with chrome driverSelenium webdriver - 使用 chrome 驱动程序隐式等待
【发布时间】:2015-05-12 07:40:29
【问题描述】:

我想在我的代码中使用隐式或显式等待。但它不适用于 chrome 驱动程序。有什么特别的补丁可以工作吗?但同样适用于 firefoxdriver。

我的应用程序仅支持 chrome,因此我无法选择使用其他浏览器。请帮助我如何使用 - 等待 - 加载元素或任何其他可用的解决方案?

【问题讨论】:

  • 两个 wait 都支持 chrome ,你得到什么错误,什么是实际问题?
  • 错误消息 -org.openqa.selenium.WebDriverException:未知错误:元素在点 (322、546) 处不可点击。其他元素会收到点击:
    ...
    (会话信息:chrome=42.0.2311.135)
  • 您能否通过更新您的问题来输入您的整个 html 代码?
  • 从您的错误消息中可以清楚地看出,您尝试单击的元素位于模式对话框/窗口中。这就是为什么其他元素获得点击的原因。

标签: selenium selenium-webdriver


【解决方案1】:

按照以下方式使用显式等待:

 WebElement Element = (new WebDriverWait(driver, 30))
              .until(ExpectedConditions.elementToBeClickable(By.className("progress_bg")));

Element.click();

您可以使用 Id 、 Xpath 或任何其他定位器作为元素。根据您的评论,我在上面使用了类。

【讨论】:

  • 也用于上述代码。但问题仍然没有解决同样的问题。
【解决方案2】:

显式等待

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 

IWebElement myDynamicElement = wait.Until<IWebElement>((d) => { return d.FindElement(By.Id("someDynamicElement")); });

隐式等待

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

另外,请尝试下载最新版本的 ChromeDriver-https://code.google.com/p/selenium/wiki/ChromeDriver

并将 WebDriver NuGet 更新到最新的可用版本 - 我认为是 2.45。

按照这些步骤,我在 Chrome 上的所有测试都运行良好。

【讨论】:

  • 如果我使用隐式等待我得到代码错误。请给我我要导入的包。它在 Manager () 和 Timespan 下
  • from selenium import webdriver driver = webdriver.Firefox() driver.implicitly_wait(10) # seconds driver.get("somedomain/url_that_delays_loading") myDynamicElement = driver.find_element_by_id("myDynamicElement")
猜你喜欢
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
  • 2012-05-11
  • 1970-01-01
相关资源
最近更新 更多