我收到了selenium的find_element_by_xpath错误。这是我得到的错误:
Traceback (most recent call last):
File "/Users/iyadschool/Desktop/q_hack.py", line 15, in <module>
text = driver.find_element_by_xpath("//*[contains(text(), ' " + term[1] + "')]")
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 354, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 832, in find_element
'value': value})['value']
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 297, in execute
self.error_handler.check_response(response)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[contains(text(), ' indifference')]"}
(Session info: chrome=64.0.3282.186)
(Driver info: chromedriver=2.35.528157 (4429ca2590d6988c0745c24c8858745aaaec01ef),platform=Mac OS X 10.12.6 x86_64)
以下是错误指向的代码段:
term = ["impalpable", "indifference", "complacent", "transpire", "abject", "derivative", "derive", "dispel", "authentic", "deprived", "aesthetic", "affinity", "depict", "impertinent", "inevitable", "deviate", "aggrandize", "aggregate"]
definition = ["unable to be felt", "lack of concern", "self-satisfied", "to happen", "miserable", "unoriginal", "to get\
come from", "to drive away", "real", "take away something", "pertaining to beauty", "a natural attraction or feeling of kinship", "To give a picture of; to describe", "rude and disrespectful", "unavoidable", "depart, from a path or plan", "to increase in power, influence, and reputation", "(v.) - to gather, amass"]
termnumb = len(term)
defnumb = len(definition)
text = driver.find_element_by_xpath("//*[contains(text(), ' " + term[1] + "')]")
text.click()
我不知道发生了什么事?我正在尝试创建一个从列表中获取第一个术语和定义的代码。然后它点击页面上的两个并转到下一个术语。我想通过标签(术语名称)
之间的文本找到元素提前致谢。
答案 0 :(得分:0)
如果您使用的是contains(),请提供最低限度以确保唯一的文本匹配。提示:任何无关的角色都会咬你。
使用开发工具中的控制台在浏览器中尝试使用定位器。 $$(“css selector here”)或$ x(“xpath here”)。如果它返回你的元素,你就被锁定并加载。如果没有,适应和克服。
这是另一种有用的故障排除方法:
elem = driver.find_element_by_xpath("//div[contains(text(), 'derive')]")
import pdb; pdb.set_trace()
text.click()
它会在点击之前将您放入脚本中,所有变量都保持不变。尝试手动运行element.click()
,并观察页面上发生的情况。点击可能很挑剔,你可能不得不尝试点击偏移,或者在极端情况下执行一个javascript剪切点击(我发现这是罕见的,也是最后的手段)。