![](/img/trans.png)
[英]Java /Selenium- How to check if the download was completed in the download folder
[英]Selenium- How to check if element is present or not
请考虑以下情形:
一个书店网站上有很多书,每本书都有一些详细信息,例如作者姓名,出版商等。主页显示书的数量,单击页面上的任何书都会打开一个弹出窗口,显示该特定书的详细信息。 html主页面如下所示。
链接书1
<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错误。
谢谢。
您可以尝试在与每个元素互动之前直接查找每个元素,而不是遍历列表,以免它们过时。 您可以这样使用xpath完成此操作:
int elementCount = fireFoxDriver.findElements(By.id(“ abc”))。Count;
for(int i = 0; i <elementCount; i ++){
firefoxDriver.findElement(By.XPath(String.Format(“ // book [id = \\” abc \\“] [{0}]”,i.ToString())))。click();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.