硒问题:陈旧的元素引用:元素没有附加到页面文档-在点击预期的文本后



我有一个问题与硒web测试我正在执行。我一直得到一个陈旧的元素引用错误后,点击并带我到下一页(这是正确的)


WebDriver driver = DriverFactory.getWebDriver()
WebElement PositionTable = driver.findElement(By.xpath('//td[2]/table/tbody/tr/td/table'))
List<WebElement> Rows = PositionTable.findElements(By.tagName('tr'))
println('No. of rows: ' + Rows.size())

table: for (int i = 0; i < Rows.size(); i++) {

List<WebElement> Cols = Rows.get(i).findElements(By.tagName('td'))

for (int j = 0; j < Cols.size(); j++) {
if (Cols.get(j).getText().equalsIgnoreCase(ExpectedPosition)) {


Cols.get(j).findElement(By.tagName('a')).click()
WebUI.delay(5)
table: break

} 
}

}

如果单击按钮更改了页面html中的任何内容,则引用将丢失。你需要重新找到所有的元素。所以修改你的代码如下

WebElement PositionTable = driver.findElement(By.xpath('//td[2]/table/tbody/tr/td/table'))
List<WebElement> Rows = PositionTable.findElements(By.tagName('tr'))
println('No. of rows: ' + Rows.size())
Int countrow = 0 

table:     while(countrow<Rows.size) {
++countrow
PositionTable = driver.findElement(By.xpath('//td[2]/table/tbody/tr/td/table'))
Rows = PositionTable.findElements(By.tagName('tr'))

List<WebElement> Cols = Rows.get(i).findElements(By.tagName('td'))
Int countcol = 0 

whil(countcol < Cols.size()) {
++countcol
Cols = Rows.get(i).findElements(By.tagName('td'))
if (Cols.get(j).getText().equalsIgnoreCase(ExpectedPosition)) {


Cols.get(j).findElement(By.tagName('a')).click()
WebUI.delay(5)
table: break

} 
}

}

最新更新