【发布时间】:2011-12-29 14:37:58
【问题描述】:
考虑以下场景:-
书店网站有许多书籍,每本书都有一些详细信息,如作者姓名、出版商等。主页显示书籍数量,点击页面上的任何书籍时,会打开一个弹出窗口,其中显示该特定书籍的详细信息书。主 html 页面如下所示。
关联 第一册
<book id="abc">
<a href="linkAddress">link</a>
<div class="name">Book 2</div>
</book>
<book id="abc">
<a href="linkAddress">link</a>
<div class="name">Book 3</div>
</book>
<book id="abc">
<a href="linkAddress">link</a>
<div class="name">Book 4</div>
</book>
<book id="abc">
<a href="linkAddress">link</a>
<div class="name">Book 5</div>
</book>
我想获取所有书籍的详细信息,所以我从主页获取了所有书籍元素的列表
List<WebElement> items = fireFoxDriver.findElements(By.id("abc"));
然后遍历该列表并逐个单击每个元素以打开显示该书详细信息的弹出窗口
for(WebElement itemDetails : items){
itemDetails.click();
//After clicking the element pop-up opens which shows details of this particular book.
//Get details of this particular book from pop-up.
}
并从打开的弹出窗口中获取我需要的详细信息,然后在获取所有必需的详细信息后关闭弹出窗口并移至下一个元素。
现在的问题是我正在使用itemDetails.click() 打开弹出窗口,但有时在打开弹出窗口时会出现以下错误。我不确定如何处理这些错误,所以请指导我。主页上有元素 我在打开弹出窗口时没有更改主页但仍然出现 DOM 错误。
- org.openqa.selenium.StaleElementReferenceException:元素不存在 不再依赖于 DOM
- com.thoughtworks.selenium.SeleniumException:等待操作完成超时
谢谢。
【问题讨论】:
-
您在处理弹出窗口吗?您需要明确选择弹出窗口以对其执行任何操作,然后您需要明确选择父窗口