无法在webdriver中使用xpath,class或id查找文本

时间:2015-10-09 12:35:50

标签: selenium xpath selenium-webdriver

无法在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();然后它提供正确的输出,但它总是需要在每次搜索或加载页面或等待选定按钮时使用 -

2 个答案:

答案 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();

希望它会对你有所帮助:)。