如何解决陈旧的元素异常我已经尝试了web驱动程序等待和尝试n捕捉,但仍然得到相同的。它也是点击按钮,我试图点击一个表,也导航到下一页。
这是相同的代码:
for(int cnum=1;cnum<=1;cnum++)
{
System.out.println("SOURCE_TABLE_ID-> " + columns.get(1).getText() + "\t ||" +"\t SOURCE_TABLE_NAME-> "+ columns.get(2).getText());
String beforexpath = "//*[@id='root']//table/tbody/tr[";
String afterxpath = "]/td[3]";
for (int i=1;i<=rnum;i++)
{
String SourceTableName= driver.findElement(By.xpath(beforexpath+i+afterxpath)).getText();
if(SourceTableName.contains("bank_data"))
{
WebElement sourcetable_element =new WebDriverWait(driver, 70).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='root']//table/tbody/tr["+i+"]/td[5]/div[@class='glyphicon glyphicon-plus']")));
sourcetable_element.click();
break;
}
else
{
System.out.println("does not starts with B so not clicking");
}
首先,让我们弄清楚什么是WebElement。
WebElement是对DOM中特定元素的引用。
当您正在与之交互的元素被销毁,然后重新创建,导致您的WebElement(对DOM中特定元素的引用)变得陈旧(即,它不再引用任何内容,因为它引用的元素已被销毁)时,会引发StaleElementReferenceException。
如今,大多数复杂的网页都会在用户与之交互时动态移动,这需要销毁并重新创建DOM中的元素,从而导致StaleElementReference错误。请记住,重新创建的元素可能看起来与被销毁的元素相同,因此在视觉上,当实际上原始元素已被销毁,然后重新创建时,页面可能看起来相同。
修复StaleElementReection ceExctive的唯一方法是重置对DOM中某个元素的引用,这是通过再次搜索该元素来完成的。因此,一旦您的WebElement变得陈旧,您需要执行另一个driver.findElement()
来再次找到DOM中的元素,这将重置引用。
我正在构建一个刮网站的c#应用程序。我认为这个问题是因为页面在一次又一次提交表单后被重新加载而导致的。我必须从选择列表中选择一个选项,然后按回车键,等待页面重新加载新结果。但是重新加载后会导致此错误; 我的代码是这样的; 我也尝试过类似的东西; 时间不多了,我有个例外,时间不多了。
我正在尝试使用LinkText单击一个元素。如: 但是,我得到以下错误: 即使元素在网页上可见,它也无法使用LinkText找到该元素,这有什么原因吗?有解决这个问题的方法吗,请帮忙?
我正在使用C#和Selenium Chromedriver来做一个测试项目,以抓取谷歌地图。 在到达第二个循环之前,它运行良好: 返回: OpenQA. Selenium.过时元素引用:元素未附加到页面文档 这是我所有的代码: 任何帮助将不胜感激!
我得到了这个错误,当我试图点击一个下拉ID: 我想用这个代码: 有没有什么方法可以防止无限循环,或者更好的方法在我得到这个异常后点击id?
这是HTML结构如下所示 错误跟踪为:
我在我的selenium java项目中不断收到一条错误消息。