我的网页中的图片在一段时间后更改了src,更改src后可能有两个可能的值(时间可能会有所不同) img_src_success或img_src_failed
我添加了以下代码,等待src更改但它无法正常工作并给出错误。
WebDriverWait wait = new WebDriverWait(driver, 120);
wait.until(ExpectedConditions.attributeToBe(image_src, "src",img_src_success );
其中image_src = WebElement
src =属性
img_src_success =字符串值“ /src/image/success.png”
img_src_running =“ /src/image/failed.png”“的字符串值”
以上代码给出错误
org.openqa.selenium.StaleElementReferenceException:过时的元素 reference:元素未附加到页面文档。
请提出我做错了什么或其他任何方式。
答案 0 :(得分:0)
s_input = "A%05d" % 231 # 'A00231'
number = s_input[1:] # '00231'
input_id = int(number) # 231
。再次执行StaleElementException
可能会解决此问题。 findElement
有一个变体,它接受一个ExpectedConditions.attributeToBe
定位符。使用该方法可以确保每次进行检查之前都可以检索该元素,并且可以解决问题。
您可以将By
与自己的wait.until
一起使用,该ExpectedCondition
可以每次获取元素并检查StaleElementReferenceException
。如下所示:
wait.until(new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver input) {
try {
WebElement deployed_row = Report_id
.findElement(By.xpath("//div[(@class = 'gridxRow') and (@rowindex = '0')]"));
WebElement table = deployed_row.findElement(By.className("gridxRowTable"));
WebElement image_src = table.findElement(By.xpath("//tbody/tr/td[2]/div/div/span/img"));
return image_src.getAttribute("src").equals(img_src_success);
} catch (StaleElementReferenceException e) {
return false;
}
}
});