как нажать на ссылку с селеном python - PullRequest
0 голосов
/ 25 января 2020

Я попытался открыть html ссылку на веб-странице jsp, используя селен, но он возвращает ошибку "невозможно найти элемент". Пожалуйста, помогите мне решить проблему, заранее спасибо.

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 Ответ

1 голос
/ 25 января 2020

Вы хотите дождаться элемента. Один из способов сделать это может выглядеть следующим образом:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...