我点击第一页上显示的文本框
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
答案 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();