如何让硒等待元素找到,而不是使用time.sleep()



基本上,我正在构建一个小脚本来自动化一些基本的东西。我一直在使用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")))

最新更新