【问题标题】:How do I select an expandable item in selenium如何在 selenium 中选择可扩展项目
【发布时间】:2014-06-15 23:59:43
【问题描述】:

我正在尝试使用 selenium 在网页上选择一个元素,但没有成功。它是一个可展开的项目,可在单击时使其他项目/字段可见。

元素代码:

<DIV class="section">
    <H1 class="sectionHeader collapsed" onclick="toggleSection('ResolutionSection',this,'YES')">Resolution Section</H1>
        <span style="width:100%;text-align: right;">
            <A HREF="#top" class="toplink">
                Go to top
            </A>

我试过的硒代码:

driver.findElement(By.xpath("/html/body/form/div[2]/div[5]/div/table/tbody/tr/td/div/div[1]/div[4]/h1")).click();
driver.findElement(By.xpath("//div[@id='documentLayoutSection']/div[4]/h1")).click()

我遇到的错误:

2014 年 6 月 15 日 7:45:18 PM org.apache.http.impl.client.DefaultRequestDirector tryExecute 信息:处理请求时捕获 I/O 异常 (java.net.SocketException):软件导致连接中止:recv 失败

cannot find element.

有人有什么建议吗?

谢谢

【问题讨论】:

  • 您在哪一行得到错误?尝试隐式等待

标签: javascript html css selenium selenium-webdriver


【解决方案1】:

您可以尝试使用Actions 链:

(new Actions(driver))
    .moveToElement(driver.findElement(By.cssSelector("h1.sectionHeader.collapsed")))
    .click()
    .build()
    .perform();

onclick javascript 事件可能正在更改页面,导致 Selenium 难以与之交互。在click 之后,Selenium 期望能够再次与元素交互。如果元素在 onclick javascript 事件期间发生变化,Selenium 将无法从 click 之后的元素返回响应。

这让 Selenium 很伤心。

由于此Actions 链是为单击鼠标当前所在的位置而构建的,因此它可能会起作用。

如果做不到这一点,我认为我们将需要查看更多 HTML,或者更好的是,如果可能的话,提供指向该页面的链接。

【讨论】:

  • 感谢您的输入,这可能有效,我尝试使用此方法,但使用 By.xpath() 因为页面上有多个此类元素,因此 css 选择器不够独特(我仍然收到未找到元素的错误)。更多信息:我正在使用 ie 驱动程序(该页面仅在 IE 上运行)我还注意到在页面完成加载之前我收到了无法定位元素错误。
猜你喜欢
  • 1970-01-01
  • 2014-10-09
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多