如何使用selenium python单击链接

2024-05-13 01:34:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用selenium在jsp网页中打开html链接,但它返回错误“无法定位元素”。请帮我解决这个问题,提前谢谢

HTML:

 <a href="#" class="dashboard-stat dashboard-stat-v2 blue" id="bookedOrders">
 </a>

Python代码:

_user = browser.find_element_by_name('username')
_user.send_keys(user_name)

_pass = browser.find_element_by_name('password')
_pass.send_keys(password)

submit = browser.find_element_by_id('submit-form')
submit.click()

order = browser.find_element_by_id('bookedOrders')
order.click()

错误:

Traceback (most recent call last):
  File "main.py", line 23, in <module>
    order = browser.find_element_by_id('bookedOrders')
  File "C:\Users\dARK_soul\AppData\Local\Programs\Python\Python37-32\lib\site-pa
ckages\selenium\webdriver\remote\webdriver.py", line 360, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "C:\Users\dARK_soul\AppData\Local\Programs\Python\Python37-32\lib\site-pa
ckages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
    'value': value})['value']
  File "C:\Users\dARK_soul\AppData\Local\Programs\Python\Python37-32\lib\site-pa
ckages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\dARK_soul\AppData\Local\Programs\Python\Python37-32\lib\site-pa
ckages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate ele
ment: [id="bookedOrders"]

Tags: inpybrowseridbyseleniumlineelement
1条回答
网友
1楼 · 发布于 2024-05-13 01:34:20

您要等待元素。一种方法如下所示:

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

_user = browser.find_element_by_name('username')
_user.send_keys(user_name)

_pass = browser.find_element_by_name('password')
_pass.send_keys(password)

submit = browser.find_element_by_id('submit-form')
submit.click()

order = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "bookedOrders")))
order.click()

#order = browser.find_element_by_id('bookedOrders')
#order.click()

相关问题 更多 >