当前,我搜索文本并单击使用自定义xpath在动态表中具有搜索字符串的行中的按钮:
//div/span[contains(text(),'search string')]/parent::div/parent::td/following-sibling::td/button[@class='btton-clicked-on-table']")
如果搜索字符串在第一页上,则可以使用。
现在,如果相同的字符串位于首页以外的其他页面上,则找不到异常。那么如何在动态表的多个页面中搜索相同的字符串?
答案 0 :(得分:0)
鉴于您提供的示例URL,这是一些快速代码,可根据您的需要进行操作,以使其适合您正在使用的网站。
String url = "https://www.redmine.org/projects/redmine/issues";
driver.navigate().to(url);
String searchTerm = "Tracker";
By searchTermLocator = By.xpath("//td[@class='subject']/a[contains(.,'" + searchTerm + "')]");
List<WebElement> links = driver.findElements(searchTermLocator);
while (links.size() == 0)
{
// click Next
driver.findElement(By.linkText("Next »")).click();
// look for matches
links = driver.findElements(searchTermLocator);
}
// match found, click it
links.get(0).click();
我要查找的搜索词在第二页上找到。
答案 1 :(得分:0)
如评论中所述,每次移动到下一页/新页面时,您都必须查找元素,还要确保在搜索元素之前有适当的等待时间,请尝试以下
int pageCount=0; // count of pages
while(nextPageIsAvaialable)
{
pageCount++;
List<WebElement> checkBoxOf_searchText = driver.findElements(By.xpath("//div/span[contains(text(),'search string')]/parent::div/parent::td/following-sibling::td/button[@class='btton-clicked-on-table']")); // use findElements --> to avoid NoSuchElementException
if (!checkBoxOf_searchText.isEmpty())
{
checkBoxOf_searchText.get(0).click();
System.out.println("Found on page number : "+ pageCount);
}
else
{
System.out.println("Not found on page number : "+ pageCount);
}
driver.findElement(By.xpath(xpathExpressionOfNextPage).click();
}