javascript - 如何在 Selenium 中选择可扩展元素

标签 javascript html css selenium selenium-webdriver

我正在尝试使用 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>

我尝试过的 Selenium 代码:​​

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()

我遇到的错误:

Jun 15, 2014 7:45:18 PM org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: I/O exception (java.net.SocketException) caught when processing request: Software caused connection abort: recv failed

OR 找不到元素。

有人有什么建议吗?

谢谢

最佳答案

您可以尝试使用Actions 链:

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

onclick javascript 事件可能会以某种方式更改页面,使 Selenium 难以与之交互。 单击 后,Selenium 期望能够再次与该元素交互。如果元素在 onclick javascript 事件期间发生变化,Selenium 将无法在 click 之后从该元素获得响应。

这让Selenium很伤心。

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

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

关于javascript - 如何在 Selenium 中选择可扩展元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235164/

相关文章:

javascript - 当半径变化时,谷歌地图附近的地点搜索不显示一些结果

html - 从 Sencha Touch Ext.data.JSONP.request 响应获取变量

javascript - 表单提交使用 SVG 捕获的签名

javascript - 如何按比例缩小不同iOS设备的大图像

javascript - jQuery,如何用更少的代码将 AJAX JSON 数据加载到 html 数据元素中?

javascript - 如何使用 JavaScript 检查客户端浏览器性能?

html - 表单不在按钮旁边

javascript - <img src>作为div中的背景图片

javascript - 在 *iPad 上的 Safari 上按 "back"按钮时未收到“pageshow””

html - 7个div,如何让他们停留在图片说的地方?