Python Selenium send_keys в поле ввода электронной почты - PullRequest
1 голос
/ 29 апреля 2020

Я пытаюсь создать сценарий автоматической проверки на https://www.footish.se/sneakers/fila-wmns-disruptor-run-1010866-60m

Я попал на страницу оформления заказа, но не могу ввести свою электронную почту в поле ввода "email" -field.

Код выглядит следующим образом

email = driver.find_element_by_xpath("/html/body/div/span/div/div/div/div[1]/div/div/div[1]/div/form/div[2]/div[1]/div/label/div/div/input")
email.send_keys("test@email.com")

Реализована какая-то функция для ожидания желаемых элементов, пока они не загружены. Один пример ->

while not find:
try:
find = driver.find_element_by_xpath("/html/body/form/div[5]/div/div[4]/div[1]/div[1]/div[2]/div[1]/div[10]/div[1]/h2")
print("Loaded info")
except:
continue

Ошибка, которую я получаю, заключается в следующем. selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/span/div/div/div/div[1]/div/div/div[1]/div/form/div[2]/div[1]/div/label/div/div/input"}

Как мне решить эту проблему? Заранее спасибо ....

1 Ответ

0 голосов
/ 29 апреля 2020

Кажется, что поле email является динамически сгенерированным элементом, и поэтому, когда проверка сделана изначально, ее еще нет. Вы можете попробовать и использовать метод until, чтобы дождаться указанного c времени и посмотреть, действительно ли он применяется к DOM.

Пример кода

driver = webdriver.Chrome()
driver.get("url")
try:
    element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, "myDynamicElement")) # set your id here
    )
finally:
    driver.quit()

Обновите, если это не работает. Это, вероятно, связано с проблемами с фреймами или неправильными путями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...