2013-08-28 31 views
0

在硒對Python中,我試圖選擇在使用硒的Python:使用find_element_by_css_selector():包含()

driver = webdriver.Firefox() 
driver.find_element_by_css_selector("td:contains('hello world')") 

使我有錯誤的元素:

>>>> selenium.common.exceptions.WebDriverException: Message: u'An invalid or illegal string was specified' 

我可以以這種方式使用許多不同的CSS選擇器來選擇元素,但使用:contains()總是會引發錯誤。注意:當我嘗試使用時出現同樣的錯誤:

driver.find_element_by_xpath("//td[contains(text(),'hello world')]") 

請指教。謝謝!

編輯:求助!

問題解決!非常感謝你的幫助!我有兩個重要的錯誤: 1)我認爲:contains()是一個公認的css3選擇器(原來它不是當前規範的一部分,這就是爲什麼我不能選擇這種方式) 2) XPath選擇器應該沒問題,只是我使用了一個解析器,它假定xpath在其中永遠不會有任何空格,所以它用空格分隔參數。因此,當我在XPath選擇

//td[contains(text(),'hello world'] 

通過解析器在空格後截斷它「你好」這樣的XPath選擇看上去像

//td[contains(text(),'hello 

這顯然會拋出一個錯誤。所以我需要調整我的解析來正確地讀取我的xpath選擇器。

再次感謝您的快速,有益的答案!

+0

我們展示HTML內容,請.. –

+0

[CSS選擇(http://www.w3schools.com/cssref/css_selectors.asp)不有什麼命名爲'contains' .. –

+1

'cssselect'支持':contains()'僞選擇器,但它指的是一個早期的CSS3草稿被刪除(http://pythonhosted.org/cssselect/#supported-選擇)。我不知道其他項目支持此pseuso選擇器 –

回答

2

更換find_element_by_xpath_selectorfind_element_by_xpath(沒有find_element_by_xpath_selector法):

driver = webdriver.Firefox() 
... 
driver = driver.find_element_by_xpath(u"//td[contains(text(), 'hello')]") 

完整的例子

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get('http://python.org') 
link = driver.find_element_by_xpath(u'//a[contains(text(), "Download")]') 
link.click() 
+0

好抓!我沒有在我的實際代碼中犯這個特別的錯誤(只是在我的Stack Overflow問題中)。我相應地更新了這個問題。儘管如此,還是一樣的錯誤 –

+0

@JeremyMoritz,請用你正在處理的網址顯示你的實際代碼。 – falsetru

+0

@falsetru這是什麼'br.find_element_by_xpath(u「// td [contains(text(),'hello')]」)'?什麼是br? –

1

你正在做錯誤的方式。您需要先創建一個驅動程序對象如下:

driver = webdriver.Firefox() 

然後導航到下面所需的網址:

driver.get("http://www.python.org") 

然後就是driver對象需要調用所需的方法。沒有包含CSS Selectors。您可以通過下面這種方法find_element_by_xpath繼續:

elem = driver.find_element_by_xpath("//td[contains(text(), 'hello')]")