繁体   English   中英

使用Python Webscraping Selenium:无法单击链接,该链接具有javascript调用包装在href标记中的函数

[英]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。 大多数时候,萤火虫并不是最好的

https://www.w3schools.com/xml/xpath_syntax.asp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM