Я планирую написать скрипт для автоматизации входа на веб-страницу OneDrive с помощью Selenium.Версия Google Chrome и Chromedriver - 74. Я всегда сталкиваюсь с NoSuchElementException и не знаю почему.Для других приложений, кроме входа в систему, у меня не было проблем с использованием Selenium и настройки Chrome.
HTML-код поля ввода электронной почты должен быть следующим:
<input type="email" class="form-control" aria-required="true" aria-label="E-Mail, Telefon oder Skype" placeholder="E-Mail, Telefon oder Skype" data-bind="hasFocus: focus, textInput: email, attr: {'placeholder': config.text.emailPlaceHolder,
'aria-label': config.text.emailPlaceHolderAria, 'aria-invalid': !error}" spellcheck="false" autocomplete="off">
Код выглядит следующим образом:
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("https://onedrive.live.com/about/de-ch/signin/")
time.sleep(10)
email = browser.find_element_by_xpath("/html/body/div[2]/div/main/div[2]/div[4]/div/input")
email.send_keys("test")
Выше XPath использовался для поиска фрагмента HTML, который был непосредственно скопирован из Chrome.Это приводит к следующей ошибке:
NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[2]/div/main/div[2]/div[4]/div/input"}
(Session info: chrome=74.0.3729.131)
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Windows NT 10.0.17763 x86_64)
Другие подходы к поиску фрагмента html были:
username = browser.find_element_by_class_name("form-control")
username = browser.find_element_by_css_selector("input.form-control")
Они также вызывали ту же ошибку.
С тем, что я нашелонлайн, я совершенно уверен, что это правильный путь.Может ли веб-страница блокировать автоматический вход в систему?
Большое спасибо за вашу помощь.
С уважением, Паскаль