4

PythonのSeleniumで、次を使用して要素を選択しようとしています

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')]")

お知らせ下さい。ありがとう!

編集:解決しました!

問題が解決しました!手伝ってくれてどうもありがとう!私には 2 つの重大な間違いがありました。 xpathにスペースが含まれていないことを前提としたパーサーを使用していたことを除けば、問題ありませんでした。そのため、引数をスペースで分割しました。したがって、xpathセレクターを渡したとき

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

パーサーは「hello」の後のスペースでそれを切り捨てたので、xpath セレクターは次のようになりました

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

これは明らかにエラーをスローします。したがって、解析を調整して、xpath セレクターを適切に読み取る必要があります。

迅速で役立つ回答をありがとうございました。

4

3 に答える 3

4

find_element_by_xpath_selectorと置き換えますfind_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()
于 2013-08-28T15:02:44.943 に答える
1

あなたは間違ったやり方をしています。以下のように、最初にドライバー オブジェクトを作成する必要があります。

driver = webdriver.Firefox()

次に、以下のように必要な URL に移動します。

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

次に、そのdriverオブジェクトで必要なメソッドを呼び出す必要があります。contains はありませんCSS Selectorsfind_element_by_xpath以下のように、この方法で先に進むことができます。

elem = driver.find_element_by_xpath("//td[contains(text(), 'hello')]")
于 2013-08-28T15:07:27.807 に答える