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