我正在尝试使用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.
有人有任何建议吗?
由于
答案 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,或者更好的是,如果可能的话,还需要指向该页面的链接。