[英]Webscraping Selenium with Python : Unable to click a link that has javascript calling a function wrapped in a href tag
问题陈述:我试图通过浏览网站上的各个链接来抓取数据,直到到达下面的代码段,该代码段对应于指向“患者列表”的超文本引用。
<td height="20" align="middle" nowrap="">
<a href="javascript:goPatientList()"><b>Patient List</b></a>
</td>
我复制了超文本引用的xpath,如下代码所示。
下一节有我的python代码。
import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver=webdriver.Chrome()
driver.get("https://example.com")
print(driver.title)
username = driver.find_element_by_name('username')
username.send_keys("username")
password = driver.find_element_by_name("password")
password.send_keys("password")
driver.find_element_by_name("Login").click()
driver.find_element_by_id("tab5").click()
driver.find_element_by_id("menu5_3").click()
**driver.find_element_by_xpath("/html/body/form/table/tbody/tr/td/table/tbody/tr[1]/td[7]/a").click()**
我收到的错误:
Traceback (most recent call last):
File "login.py", line 31, in <module>
driver.find_element_by_xpath("/html/body/form/table/tbody/tr/td/table/tbody/tr[1]/td[7]/a").click()
File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 295, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 756, in find_element
'value': value})['value']
File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 238, in execute
self.error_handler.check_response(response)
File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 193, in check_responseraise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/form/table/tbody/tr/td/table/tbody/tr[1]/td[7]/a"}
(Session info: chrome=56.0.2924.87)
(Driver info: chromedriver=2.28.455517 (2c6d2707d8ea850c862f04ac066724273981e88f),platform=Mac OS X 10.11.6 x86_64)
有人可以复查这段代码并在此过程中为我提供指导吗?
NoSuchElementException
表示硒找不到元素。 您使用的xpath很可能是错误的。 检查您的xpath。 您也可以使用Firefox firebug扩展程序测试xpath。
另一种可能性是当我们与人类相比时硒会很快。 当硒加载页面并单击时,可能没有按钮或与javascript有关。因此,我们可以告诉硒等待一点然后单击。 因此,在单击之前添加等待功能。
driver.find_element_by_name("Login").click()
driver.implicitly_wait(10)
您需要学习如何制作适当的xpath。 大多数时候,萤火虫并不是最好的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.