背景Selenium WebDriver,Java:如何通過比較兩個元素來確定頁面是否完全加載?
我使用Selenium WebDriver/Java來刮一張表。我感興趣的表格分成許多不同的頁面(=必須點擊鏈接才能看到下一頁)。表格底部是一個不完整的數字索引(整個表格爲170多頁,當您位於前20頁的其中一頁時,索引包含第1-20頁的鏈接,當您位於第21-40頁時,索引包含第21-40頁等的鏈接),您可以點擊特定號碼來加載該頁面。整個指標位於一個單元格中,如此12 ... 20。也有鏈接到第一個,上一頁頁,下一頁和Last page。
到當前頁面的鏈接數量有一個特定的類別(當前頁面)。我通過點擊下一頁瀏覽每個頁面,這裏是問題:如何在下一頁時驗證表格是否已完成加載?
在這個項目通常情況下,以驗證頁面硒收益完全加載之後我用這樣的代碼:
webDriverBackedSelenium.click(xpathToSomeLink);
new WebDriverWait(driver, normalTimeout).until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpathToSomeElemen)));
現在我的問題/問題:我一直無法寫一個XPath我可以在上面的代碼中使用它。我想我需要的是,在Selenium點擊一個鏈接之後,看看A
-tag的內容,它的類別爲CurrentPage,並確認它已經改變(+1),而不是點擊之前。
我發現了什麼樣子的怎麼寫,這裏的目標標記的內容http://manual.calibre-ebook.com/xpath.html#selecting-by-tag-content XPath的一個很好的例子,但是當我在Firebug/Firepath運行他們的榜樣//h:h2[re:test(., 'chapter|section', 'i')]
我剛剛收到一條錯誤消息的XPath是無效的。爲什麼?他們的例子有什麼問題?我如何寫一個XPath我可以這兩種情況之間的區別(我21頁的第一種情況下,在第二個例子中,我第22頁):
<table>
<tr>
<td>
<a class="CurrentPage" href="javascript:doPostBack('XXX')">21</a>
<a class="OtherPage" href="javascript:doPostBack('XXX')">22</a>
<table>
<tr>
<td>
<a class="OtherPage" href="javascript:doPostBack('XXX')">21</a>
<a class="CurrentPage" href="javascript:doPostBack('XXX')">22</a>
最後請注意:我使用的硒從網站上抓取數據,也就是說,重新設計它以使上述過程更簡單不是一種選擇。
您可以使用'find_element_by_partial_link_text'.You可以給'page'或其他常量並保留變量部分。 – vks 2014-10-09 12:00:46
我可以以某種方式使用XPath限定它嗎?因爲我所使用的表格充滿了數字,並且大多數在0到100之間,因此表格中的頁碼和一些數據重合是一個很大的風險。 – 2014-10-09 13:20:15
@ user23122 *實際*問題是什麼?你想要一個Xpath返回''元素的類屬性等於'CurrentPage'嗎? '// a [@ class ='CurrentPage']' – har07 2014-10-09 13:33:08