繁体   English   中英

如何使用python修复Selenium Web驱动程序``异常错误''

[英]How to fix selenium web driver 'exception error' with python

我正在创建一个机器人,以在Chrome浏览器上使用带有硒网络驱动程序的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')

我希望用户名字段能预填。

有一个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') 

浏览器快照:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM