簡體   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