如何单击与硒python的链接

时间:2020-01-25 17:05:54

标签: javascript python selenium jsp beautifulsoup

我尝试使用硒在 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"]

1 个答案:

答案 0 :(得分:1)

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

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()