也许您没有考虑元素需要加载的时间,而是在它们尚未“可搜索”时查找它们。更新我跳过了关于这个问题的例子。请参阅Slanec 的评论。
无论如何,Selenium 建议尽可能避免通过 xpath 搜索,因为它更慢且更“脆弱”。你可以像这样找到你的元素:
//see the method code below
WebElement div = findDivByTitle("Action Selected Jobs");
//example of searching for one (first found) element
if (div != null) {
WebElement myElement = div.findElement(By.className("context-menu-item"));
}
......
//example of searching for all the elements
if (div != null) {
WebElement myElement = div.findElements(By.className("context-menu-item-inner"));
}
//try to wrap the code above in convenient method/s with expressive names
//and separate it from test code
......
WebElement findDivByTitle(final String divTitle) {
List<WebElement> foundDivs = this._driver.findElements(By.tagName("div"));
for (WebElement div : foundDivs) {
if (element.getAttribute("title").equals(divTitle)) {
return element;
}
}
return null;
}
这是近似代码(根据您的解释),您应该更好地适应您的目的。同样,请记住考虑加载时间并将您的实用程序代码与测试代码分开。
希望能帮助到你。