在Selenium中使用JavascriptExecutor时,Click方法无效

时间:2017-09-19 07:30:23

标签: selenium

我点击第一页上显示的文本框

WebElement txtBox = driver.findElement(By.xpath("---xpath---"));
      txtBox.click();

然后在一些执行块后,我在同一窗口的新页面中获得相同的文本框。 在这里我也想点击文本框。 我使用JavascriptExecutor来编写脚本。

((JavascriptExecutor)driver).executeScript("arguments[0].click();", txtBox );

但是在运行脚本时,我收到一条错误消息:

org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document

2 个答案:

答案 0 :(得分:1)

每次重新加载页面时都需要执行driver.findElement()

此方法返回WebElement,它是当前页面的组成部分。如果您刷新浏览器或导航到某个其他URL,或者即使某个javascript在同一页面上删除并重新附加了元素,则以前找到的元素也不能再使用了。

此处您对此例外有正式解释:http://www.seleniumhq.org/exceptions/stale_element_reference.jsp

答案 1 :(得分:0)

想要与之前加载的元素进行交互后,会出现

陈旧元素异常。如果你获得了webelement,然后重新加载页面就会产生这个异常,因为它不在新创建的页面中。最好单击Web元素,而不将其分配给变量,如:

driver.findElement(By.xpath("---xpath---")).click();