首页 > 解决方案 > 通过 Selenium 向 WebElement 发送文本问题

问题描述

我试图让这段代码工作,但事实并非如此。我手动输入,它可以工作,但当我自动化它时却不行。

import selenium
import time
import os
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
num = 1
while num != 1000:
    driver = webdriver.Chrome(ChromeDriverManager().install())
    driver.get('https://mobile.brawlhalla.com/?kid=1415HM')
    id_box = driver.find_element_by_id('email')
    id_box.send_keys(str(num) +'@1.com')
    login_button = driver.find_element_by_id('btn-id-6zgew9flrfn')
    login_button.click()
    time.sleep(10)
    os.system("taskkill /im chrome.exe /f")
    num = num + 1

标签: pythonselenium

解决方案


您可能应该WebDriverWait在尝试将密钥发送到input您找到的字段之前调用。这可能会有所帮助:

import selenium
import time
import os
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

num = 1
while num != 1000:
    driver = webdriver.Chrome(ChromeDriverManager().install())
    driver.get('https://mobile.brawlhalla.com/?kid=1415HM')

    # invoke WebDriverWait before sending keys to email field
    id_box = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "email")))
    id_box.send_keys(str(num) +'@1.com')
    login_button = driver.find_element_by_id('btn-id-6zgew9flrfn')
    login_button.click()
    time.sleep(10)
    os.system("taskkill /im chrome.exe /f")
    num = num + 1

推荐阅读