Selenium Timeout Exception python - PullRequest
       6

Selenium Timeout Exception python

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

Итак, я создавал регистрационную машину, используя селен. Когда эта страница загружается в https://mail.protonmail.com/create/new?language=en, она не может найти элемент по id / xpath из username . С другой стороны удалось найти пароль, пароль c элементов. Я пытался использовать функцию WebDriverWait , но она дает ошибка тайм-аута . Многое перепробовал, но эта штука все еще дает мне ошибку. Если возможно, предложите способ найти элемент из имя пользователя на последней странице или идеальный код WebDriverWait. Ниже мой код

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time

url = 'https://protonmail.com/'
driver = webdriver.Chrome('C://Users/AAA/Desktop/chromedriver.exe')
driver.get(url)

driver.find_element_by_xpath('//*[@id="bs-example-navbar-collapse-1"]/ul/li[8]/a').click()
time.sleep(2)
driver.find_element_by_xpath('//*[@id="signup-plans"]/div[5]/div[1]/div[1]/div/div[1]/h4').click()
time.sleep(1)
driver.find_element_by_id('freePlan').click()
time.sleep(1)
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, "username")))
driver.find_element_by_xpath('//*[@id="username"]').send_keys('santaking44455')
time.sleep(1)
driver.find_element_by_id('password').send_keys('25J8e5b8')
time.sleep(1)
driver.find_element_by_id('passwordc').send_keys('25J8e5b8')```

1 Ответ

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

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

iframe=driver.find_element_by_xpath('//*[@title="Registration form"]')
driver.switch_to.frame(iframe)
driver.find_element_by_xpath('//*[@id="username"]').send_keys('santaking44455')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...