gpt4 book ai didi

python - 我的 selenium 代码有时无法找到按钮,有时却找不到,为什么?

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:31 25 4
gpt4 key购买 nike

基本上我的问题是我有时找不到我的按钮,有时我可以,我手动检查肯定不是 iframe 问题(即使它有时不起作用,但在其他情况下不起作用),所以我认为这可能是页面加载速度太慢且不一致,我将 sleep() 设置为 5 秒左右仍然无法正常工作。

我的代码:

def twoclicks(idoutter,idinner):
outter = driver.find_element_by_xpath("//input[contains(@id," + idoutter + ") and @value='...']")
outter.click()
sleep(10)
driver.find_element_by_id(idinner).click()
sleep(7)

我如何才能将其更改为仅在我的按钮显示时单击,否则如果未按下则等待 20 秒。

最佳答案

删除sleep(),硬编码 sleep 间隔确实是一种不好的做法。使用 WebDriverWait 更改元素 getter :

def twoclicks(idoutter,idinner):
wait = WebDriverWait(driver, 20) # if you are going to use this interval somewhere else, define it in a higher-level scope
wait.until(EC.presence_of_element_located((By.XPATH, "//input[contains(@id," + idoutter + ") and @value='...']"))).click()
wait.until(EC.presence_of_element_located((By.ID, idinner))).click()

WebDriverWait.until()等待满足条件,然后返回匹配的元素,在该元素上将调用 click() 方法。它将最多等待 20 秒 - 其构造函数中的参数,每 500 毫秒检查一次页面的条件。

您必须添加这些导入才能使用此方法:

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

快乐诱导! ;)

关于python - 我的 selenium 代码有时无法找到按钮,有时却找不到,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587928/

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