Python Selenium 单击 webdriverwait 与 find_element

问题描述 投票:0回答:1

我无法理解这两个代码块之间的区别。发送点击在 webdriverwait 和 find_elements 中都可以工作。

代码1

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

driver = webdriver.Chrome(options=options)
wait = WebDriverWait(driver, 45)


wait.until(EC.presence_of_element_located((By.LINK_TEXT, "ABC"))).click()

代码2

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

driver = webdriver.Chrome(options=options)
wait = WebDriverWait(driver, 45)

wait.until(EC.presence_of_element_located((By.LINK_TEXT, "ABC")))
driver.find_element(By.LINK_TEXT,"ABC").click()
    
python selenium-webdriver webdriverwait
1个回答
0
投票
wait.until(EC.presence_of_element_located((By.LINK_TEXT, "ABC")))

这将返回一个 webElement,您可以调用可用于 webElement 的方法,即

click()
send_keys()
clear()
等。

driver.find_element(By.LINK_TEXT,"ABC")

这也做了同样的事情,即:它将返回一个 webElement。

区别:两者之间的主要区别:

WebDriverWait
是Selenium中的显式等待,这意味着如果在DOM中找不到元素,那么它将在
500ms
之后重试,即再次
.5 sec
,直到
45 sec
(因为您在构造函数调用中定义了 45 秒)。如果在此时间内找到,它将返回 webElement,否则它将引发
timeOutException

另一方面,

driver.find_element
将尝试立即查找该元素,如果找到,它将返回webElement,如果没有,将引发异常
NoSuchElement
或其他一些。

您可以在此处阅读有关显式等待的更多信息

© www.soinside.com 2019 - 2024. All rights reserved.