2015-10-09 75 views
0

無法在webdriver中使用xpath,class或id查找文本,因爲它與Thread.Sleep(5000);方法,但它不需要在所有命令中使用,任何其他我們可以使用等待方法的解決方案,因爲隱式和顯式等待不會提供正確的結果。無法在webdriver中使用xpath,class或id找到文本

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> 

因爲它給我的輸出如下,如果我使用,然後等待也同樣不是線程

顯示0到0的條目

Actual- 顯示1到10共21

如果我使用thread.sleep();然後給出正確的輸出,但它總是需要在每一個搜索中使用或加載頁面或等待選擇按鈕 -

+0

這些數字來了嗎?你需要等待什麼?請分享一些更多細節。 –

+0

Hi Akbas,這些值是一張表格,顯示了表格頁腳21處數據1到10。它的動態表格,因爲我是硒的新手,但是在項目中,如果值會相同直到我更新它。它的一種詠歎調生活相關。 –

+0

你做了什麼,然後得到total_count? –

回答

0

嘗試下面的XPath: -

//div[@id='DataTables_Table_0_info' and @class='dataTables_info' and contains(.,'Showing 1 to 10 of 21 entries')] 

如果你想要得到的字符串,然後使用下面的代碼: -

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

希望它會幫助你:)

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秒,這就是你需要從你的問題中解釋的。

相關問題