I have this html snippet:
<div class="btn">
<a href="javascript:void(0)" class="S_btn_b" node-type="OK">
<span>确定</span>
</a>
</div>
And I want to select the 确定 element and click it. I tried the following selector with xpath:
confirm_btn = driver.find_element_by_xpath('//div[@class="btn"]//span[text()="确定"]')
But the program just complain that that is not a valid selector with this Exception:
Traceback (most recent call last):
File "test.py", line 63, in <module>
ac.move_to_element(driver.find_element_by_xpath('//div[@class="btn"]/span[text()="确定"'))
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 230, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 662, in find_element
{'using': by, 'value': value})['value']
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 173, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 166, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSelectorException
Did I do something wrong ?
asked Feb 10, 2015 at 10:58
armnotstrong
9,18518 gold badges70 silver badges137 bronze badges
1 Answer 1
If you do not mark your XPath expression as Unicode, the Hanzi will get mangled when the search command is sent to the browser and the search will search for something else than what you want so mark your XPath expression as Unicode:
confirm_btn = driver.find_element_by_xpath(u'//div[@class="btn"]//span[text()="确定"]')
answered Feb 10, 2015 at 12:33
Louis
152k28 gold badges289 silver badges332 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
default
'//div[@class="btn"]//span'?text()ofspanmay be the quote sign case the problem?find_element_by_link_text(u'确定')like that, and yes, they are Chinese characters, weird, though.find_element_by_xpath(u'//div[@class="btn"]//span[text()="确定"]')and it worked. You should answer this problem so that I can accept it :-)