如何在selenium中选择可扩展项目

时间:2014-06-15 23:59:44

标签: 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 Code我尝试过:

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

cannot find element.

有人有任何建议吗?

由于

1 个答案:

答案 0 :(得分:2)

您可以尝试使用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,或者更好的是,如果可能的话,还需要指向该页面的链接。