我試圖用Selenium和xpaths來獲取一些數據。Selenium的Xpath嵌套括號問題(使用Python)
以下XPath正常工作:
print sel.get_attribute("xpath=(//*[@id='course_list']/*[@class='series'])[4]//*[@class='series_links']//a/@href")
,並返回4匹配的URL。到現在爲止還挺好。
問題是我想編寫一個xpath來單獨定位每個URL。
使用Firefox的XPath檢查插件,我已成功地證實,下面的代碼不正是我需要的:
((//*[@id='course_list']/*[@class='series'])[4]//*[@class='series_links']//a/@href)[1]
不過,儘管Firefox的XPath的檢查工作,我似乎無法得到這個在Selenium工作。
每當我試着執行:
print sel.get_attribute("xpath=((//*[@id='course_list']/*[@class='series'])[4]//*[@class='series_links']//a/@href)[1]")
我得到以下錯誤:
Exception: ERROR: Invalid xpath [2]: ((//*[@id='course_list']/*[@class='series'])[4]//*[@class='series_links']//a
不知道這是怎麼回事的。我犯了一個簡單的錯誤,還是Selenium xpath不支持像FF xpath檢查器那樣的嵌套括號?
任何想法,將最讚賞,因爲我一直工作在這幾個小時,似乎無法使它工作:(
啊:(我如何可能會通過其他方式解決我的問題嗎?如果我運行打印sel.get_attribute(「XPath的=(// * [@ ID = 'course_list']/* [@類的任何想法='series'])[4] // * [@ class ='series_links'] // a/@ href「)它只打印一個結果,儘管xpath匹配4個不同的URL。 – Jonathan
@MartijnPieters,不,這是一個語法正確的XPath 1.0表達式 –
@DimitreNovatchev:好吧,錯誤的猜測然後 –