Не удается сузить правильный элемент в Python / Selenium

#javascript #python #jquery #selenium

#javascript #python #jquery #селен

Вопрос:

Итак, я пытаюсь создать скрипт управления сайтом, который поможет автоматизировать создание почтовых ящиков электронной почты на нашем хостинге.

Я новичок в Python и новичок в написании сценариев веб-ресурсов, поэтому, если что-то выглядит странно или посредственно, вот почему 🙂

Вот мой сценарий:

 import time
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
from selenium import webdriver
from selenium.webdriver.support.select import Select as driverselect

driver = webdriver.Firefox()
main_url = 'https://website.com:446'
opts = Options()
# noinspection PyDeprecation
# opts.set_headless()
#assert opts.headless  # Operating in headless mode
browser = Firefox(options=opts)
browser.get(main_url)

search_form = browser.find_element_by_id('LoginName')
search_form.send_keys('username')
search_form = browser.find_element_by_id('Password')
search_form.send_keys('password')
search_form.submit()
time.sleep(5)
# provision = driverselect(driver.find_element_by_xpath("/html/body/div[2]/div[2]/nav/div/ul/li[4]"))
provision = driver.find_element_by_xpath('/html/body/div[2]/div[2]/nav/div/ul/li[4]/a/span[1]')
provision.submit()
# exchange = driver.find_element_by_name('Exchange')
# exchange.submit()
  

Моя ошибка:

Трассировка (последний последний вызов): File «/home/turd/PycharmProjects/Automate_NSGEmail/selenium_test.py «, строка 23, в provision = driver.find_element_by_xpath(‘/html/body/div[2]/div[2]/nav/div/ul/li[4]/a/span 1‘)

Файл «/home/turd/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py «, строка 394, в find_element_by_xpath возвращает self.find_element(by=By.XPATH, значение = xpath) Файл «/home/turd/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py «, строка 976, в find_element возвращает self.execute(команда.FIND_ELEMENT, { File «/home/turd/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py «, строка 321, в execute self.error_handler.check_response(ответ) Файл «/home/turd/.local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py «, строка 242, в check_response вызывает exception_class(message, screen, stacktrace) selenium.common.exceptions.Исключение NoSuchElementException: Сообщение: не удается найти элемент: /html/body/div[2]/div[2]/nav/div/ul/ li[4]/a/ span 1

Теперь, когда значение Xpath я скопировал прямо из инструментов разработчика на этой странице, вот как выглядит этот блок кода с сайта:

введите описание изображения здесь

Я пытаюсь захватить и «щелкнуть» по одному активному пункту динамического меню на рисунке выше. Я думаю, что это меню JS, но я не уверен на 100%.

В любом случае я был бы очень признателен, если бы кто-нибудь мог помочь мне сузить это и захватить этот проклятый элемент.

Ответ №1:

Итак, я сам нашел ответ.. У меня был неправильный код в начале моего скрипта:

 driver = webdriver.Firefox()
main_url = 'https://website.com:446'
opts = Options()
# noinspection PyDeprecation
# opts.set_headless()
#assert opts.headless  # Operating in headless mode
browser = Firefox(options=opts)
browser.get(main_url)
  

Я изменил этот раздел на:

 driver = webdriver.Firefox()
url = 'https://website.com:446'
opts = Options()
driver.maximize_window()
driver.get(url)
  

До этого я открывал два экземпляра Firebox, драйвер. * lines пытался найти теги xpath в экземпляре FF, который не был зарегистрирован.

Сумасшедший.