gpt4 book ai didi

python - 如何让 Selenium 等到找到元素而不是使用 time.sleep()

转载 作者:行者123 更新时间:2023-12-05 06:07:53 24 4
gpt4 key购买 nike

基本上,我正在构建一个小脚本来自动化一些基本的东西。我一直在使用 time.sleep() 让软件稍等片刻,直到所有内容都加载完毕,但是否有更好的方法来做到这一点??

我希望脚本自行等待必要的时间,以使事情变得更快、更干净。

from selenium import webdriver

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import Select
import time
from tkinter import *


def cs_update():

PATH = "C:\Program Files (x86)\chromedriver.exe"
options = Options()
options.headless = True



driver = webdriver.Chrome(PATH,options = options)
driver.set_window_size(1920,1080)
driver.minimize_window()

user_email = e.get()
user_password = e2.get()

driver.get("https://www.compraensanjuan.com")
time.sleep(3)


link = driver.find_element_by_link_text("Mi cuenta")

link.click()
time.sleep(3)

email = driver.find_element_by_name("email")

email.send_keys(user_email)

print("I sent the keys")

最佳答案

这就是您可以使用 ExplicitWait 的方式

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

driver.get("https://www.compraensanjuan.com")

timeout = 20 # set seconds to wait until TimeOutException raised
link = WebDriverWait(driver, timeout).until(EC.element_to_be_clickable((By.LINK_TEXT, "Mi cuenta")))

link.click()

email = WebDriverWait(driver, timeout).until(EC.presence_of_element_located((By.NAME, "email")))

关于python - 如何让 Selenium 等到找到元素而不是使用 time.sleep(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65297594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com