无法在webdriver中使用xpath,class或id查找文本,因为它与Thread.Sleep(5000)一起使用;方法,但它不必在所有命令中使用,我们可以使用wait方法的任何其他解决方案,因为隐式和显式等待不能提供正确的结果。
String total_count = driver.findElement(By.className("dataTables_info")).getText();
System.out.println(total_count);
Xpath- .//* [@ id ='DataTables_Table_0_info']
Id- DataTables_Table_0_info
<div class="fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-bl ui-corner-br">
<div id="DataTables_Table_0_info" class="dataTables_info" role="status" aria-live="polite">Showing 1 to 10 of 21 entries</div>
因为它给我输出如下,如果我使用wait然后也相同而不是线程
显示0个条目中的0到0
Actual- 显示1到10的21
如果我使用thread.sleep();然后它提供正确的输出,但它总是需要在每次搜索或加载页面或等待选定按钮时使用 -
答案 0 :(得分:1)
您可能会尝试一些等待(直到正确的值被“传递”到您的网站):
WebDriverWait wait = (WebDriverWait)new WebDriverWait(driver, 5).ignoring(StaleElementReferenceException.class);
wait.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
List<WebElement> elements = driver.findElements(By.xpath("//div[@id='DataTables_Table_0_info' and contains(.,'Showing 0')]"));
return elements.size() == 0;
}
});
String total_count = driver.findElement(By.className("dataTables_info")).getText();
System.out.println(total_count);
基本上你在等待文字不再说“显示0 ......”了。 我会等待最多5秒钟。您可以更改此号码。如果文字在这5秒之前发生变化,那么它只会等到目前为止,而不是整整5秒,这就是你需要从你的问题中得知的。
答案 1 :(得分:0)
尝试以下Xpath: -
//div[@id='DataTables_Table_0_info' and @class='dataTables_info' and contains(.,'Showing 1 to 10 of 21 entries')]
如果您想获取String,请使用以下代码: -
String elem1 = driver.findElement(By.xpath("//div[@id='DataTables_Table_0_info' and @class='dataTables_info' and contains(.,'Showing 1 to 10 of 21 entries')]")).getText();
希望它会对你有所帮助:)。