我正在创建一个机器人,以在chrome浏览器中使用带有硒Web驱动程序的Python和质子邮件作为电子邮件服务来批量创建电子邮件帐户。当测试到达表单页面以填写您的电子邮件地址等时,我在预填表单字段时遇到问题,并且在终端上收到此错误。
引发TimeoutException(消息,屏幕,堆栈跟踪) selenium.common.exceptions.TimeoutException:消息:
我尝试增加等待时间,但是没有运气。我正在使用send_keys来预填充字段,但没有运气。下方代码中显示的测试均有效,除了最后一个命中表单页面以预填充电子邮件用户名的测试。
from selenium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
url = 'https://protonmail.com/'
driver = webdriver.Chrome(
'/Users/[MYNAME]/Downloads/chromedriver')
driver.get(url)
signUp = WebDriverWait(driver, 5).until(
EC.visibility_of_element_located((By.XPATH, '//* .
[@href="signup"]')))
signUp.click()
panel = WebDriverWait(driver, 5).until(
EC.element_to_be_clickable((By.CLASS_NAME, 'panel-heading')))
panel.click()
plan = WebDriverWait(driver, 2).until(
EC.element_to_be_clickable((By.ID, 'freePlan')))
plan.click()
username = WebDriverWait(driver, 3).until(
EC.element_to_be_clickable((By.ID, 'username')))
username.click()
username.send_keys('usernameForUSer')
我希望用户名字段能预填。
答案 0 :(得分:0)
有一个iframe
被阻止访问该元素。您需要先切换到iframe
。
尝试以下代码。
WebDriverWait(driver, 15).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, 'iframe.top')))
username = WebDriverWait(driver, 3).until(EC.element_to_be_clickable((By.ID, 'username')))
username.click()
username.send_keys('usernameForUSer')
浏览器快照: