我有一个包含10个不同元素链接列表的页面,我clicao一个元素,转到页面指定它,实现需要执行的操作然后返回到元素列表。
执行操作后,我需要返回项目列表并单击下一个元素,而不是单击之前单击的元素。
如何点击列表的下一个元素而不是已点击的LEMENT?
Obs。:我无法访问源代码。
页面的基本结构:
<!DOCTYPE html>
<html>
<body>
<h2>Page Test</h2>
<div id="results-container"><ol id="results" class="search-results">
<li class="mod result idx0 people hover" data-li-entity-id="354494011" data-li-position="0"> </li>
</div>
</br>
<div id="results-container"><ol id="results" class="search-results">
<li class="mod result idx0 people hover" data-li-entity-id="354494012" data-li-position="1"> </li>
</div>
</br>
<div id="results-container"><ol id="results" class="search-results">
<li class="mod result idx0 people hover" data-li-entity-id="354494022" data-li-position="2"> </li>
</div>
</body>
</html>
java.util.List<WebElement> links = (List<WebElement>) driver.findElements(By.linkText("element"));
System.out.println(links.size());
答案 0 :(得分:4)
List<WebElement> links = driver.findElements(By.className("search-results"));
for( int i = 0; i < links.size(); i++)
{
//The stop below is necessary to store all links in a list to access later.
links = driver.findElements(By.className("search-results"));
links.get(i).click();
// Your code here
driver.navigate().back();
}
答案 1 :(得分:1)
如果您导航到的所有页面需要执行的操作相同,则可以使用以下内容:
List<WebElement> links = (List<WebElement>) driver.findElements(By.linkText("element"));
for (WebElement link : links)
{
link.click();
doWhateverOtherActions();
driver.navigate().back();
break();
}
如果每个页面上的操作不同,您应该考虑将每个链接分别标识为WebElement,并为每个链接创建方法以单击该链接,对该页面执行特定操作并返回到初始页面。