2016-09-30 70 views
2

我使用的硒webdriver的Python中找到一個網頁來處理元素內的數字,在方式如下圖所示:遍歷的XPath

driver.find_element_by_xpath('//div[@class="gsc-cursor-page" and text()="1"]') 

理想情況下,我想通過所有文本在該格內,text()="1",text()="2",... text()="10"等,但由於整個Xpath是一個字符串,不知何故我無法找到一種方法來寫一個迭代for i in range(10)而不會破壞內部結構。

我能得到的最接近的是

mypath = '//div[@class="gsc-cursor-page" and text()="' + str(i) + '"]' 
next = driver.find_element_by_xpath(path) 

但是,這也導致了錯誤。有關如何解決此問題的任何建議?

+0

循環是正確的。試着等一等。或者你能分享這個網站嗎? –

+1

@carl_pch *「但是這也會導致錯誤」*。而錯誤信息是....? – har07

+0

@KishanPatel和har07:謝謝你的迴應!請參閱我更新的問題並提供更多信息! –

回答

2

此XPath,

//div[@class="gsc-cursor-page" and number() >= 1 and number() <= 10] 

將選擇所有指定@class的具有在1..10範圍內的值的div元件。


具體的Python /硒代碼解決OP的評論

xp = "//div[@class="gsc-cursor-page" and number() >= 1 and number() <= 10]" 

for div in driver.find_elements_by_xpath(xp): 
    div.click() 
+0

謝謝!對不起,先不澄清這一點,但我不是簡單地嘗試一次選擇所有我,但要反覆點擊每個我(看我更新的問題) –

+0

只需遍歷Python中選定的'div'列表,然後單擊Selenium就像你通常那樣。 – kjhughes

-1

不知何故,我能夠把迭代變量通過「位置」,而不是usnig一個div內部的文本。感謝您的所有幫助和提示!

driver.find_element_by_xpath('//div[@class="gsc-cursor"]/div[position()='+str(i)+']') 
+0

這與你所問的完全不同。你問及,你的例子顯示,測試對'div'元素的***數字內容***。這個答案迭代不是基於它們的***數字內容的'div'元素,而是基於它們的***位置***。 – kjhughes