【问题标题】:Selenium Web Driver click actionSelenium Web 驱动程序单击操作
【发布时间】:2013-02-07 10:13:16
【问题描述】:

我在 selenium 中有一个代码,它可以动态单击菜单页面中的选项卡。有时会发生该选项卡不可点击(它只是一个普通的td,里面有span),当Web Driver 试图点击这个选项卡时,我的程序被冻结(没有抛出异常或任何东西)。

我无法避免点击这样的标签,但我想以某种方式防止点击后冻结。那么我可以设置一些超时时间或者告诉 selenium 如果元素不可点击该怎么办?

driver.findElement(By.xpath(
    format("//span[@class='rf-tab-lbl'][text()='{0}']",
        navigation.getGroup()))).click();
//if the tab is currently selected (hence is not clickable) selenium won't click 
// on it and program freezes

【问题讨论】:

  • 什么浏览器?那个浏览器是什么版本的?什么版本的 Selenium?
  • 问题是它不应该冻结。当您在页面上手动单击它时,它是否也会冻结?尝试用 Firebug 点击它,看看它是否触发了某种可以欺骗 WebDriver 的响应。如果它正在等待某个脚本,您可以尝试设置script timeoutdriver.manage().timeouts().setScriptTimeout(...),虽然我认为这不会有帮助。
  • 另外,可点击和不可点击的标签有什么区别?您不能只检查该元素是否包含在 <td> 而不是 <a> 元素中吗?

标签: java selenium webdriver selenium-webdriver htmlunit


【解决方案1】:

请尝试来自不同网站的另一个页面。这可能是一个 JS 循环问题。 我在某些 URL 的 HtmlUnit 中遇到了这样的问题。 我在 HtmlUnit 用户组中提出了问题。 他们告诉我 JS 无限循环导致冻结。 超时对我也不起作用。

我尝试申请自己的超时时间。那也没有用。

请参阅以下问题以应用自己的超时

HtmlUnit WebClient Timeout

如果它适用于其他网站,则问题可能是特定于网站的。 您可以在 eclipse 中附加 Selenium 的源代码并检查/调试它卡住的位置。 我对 HtmlUnit 做了同样的事情。我伸手去解析方法,没有出来。

如果仍然无法正常工作,请联系 Selenium 支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-22
    • 2016-09-29
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2017-11-06
    • 2014-05-30
    • 1970-01-01
    相关资源
    最近更新 更多