我正在尝试制作一个小程序,它在隐藏按钮处查看网页(在类中使用隐藏)并等待它在单击之前可单击。代码如下。我想知道WebDriverWait
andelement_to_be_clickable
函数是否已经通过刷新,或者我是否必须手动刷新页面。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
from selenium.common.exceptions import WebDriverException
driver = webdriver.Firefox()
driver.get(<URL>)
print("beginning 120s wait")
time.sleep(120)
print("finished 120s wait")
try:
element = WebDriverWait(driver, 1000).until(
EC.element_to_be_clickable((By.CLASS_NAME, "btn add"))
)
print("It went through")
element.click()
driver.execute_script("alert('It went through!');")
finally:
driver.execute_script("alert('Did it work?');")
首先,我不确定仅通过类名减去“隐藏”部分搜索是否真的会找到正确的元素,但更大的问题是我不知道按钮是否只有在刷新页面后才可见. 如果我需要刷新,那会很烦人,因为大多数网站在发现机器人正在访问该网站时都会为 Firefox 或 Chrome 提供额外的验证码。(这就是为什么我有最初的睡眠:这样我就可以先手动完成任何验证码)
那么,我是否需要刷新我的代码,或者没有它会好吗?如果我确实需要它,我该如何实现它?我只是像这样添加它:
try:
element = WebDriverWait(driver, 1000).until(
drive.refresh()
EC.element_to_be_clickable((By.CLASS_NAME, "btn add"))
)
很抱歉,如果这已经在其他地方得到了回答,我搜索了一堆,但我还没有在这个网站上找到答案。