Selenium将等待用户单击按钮

2024-06-07 15:43:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须让用户提供OTP并点击按钮的网站实现自动化。由于OTP未知,此部分无法自动化。因此,我需要selenium脚本等待用户单击按钮。 有什么方法可以做到这一点吗?(通过selenium而不是用户交互)

我试过这个:

from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(driver, 1).until(lambda d: d.execute_script("return document.getElementById('loginbutton').clicked")=="true")

但会引发以下错误:

WebDriverWait(驱动程序,1).until(lambda d:d.execute_脚本(“return document.getElementById('loginbutton')。clicked”)=“true”) 文件“C:\Users\project\venv\lib\site packages\selenium\webdriver\support\wait.py”,第80行,直到 引发TimeoutException(消息、屏幕、堆栈跟踪) selenium.common.Exception.TimeoutException:消息: 流程结束,退出代码为1

document.getElementById('loginbutton').clicked

在开发人员工具上执行时给出未定义的,这可能是上述错误的原因吗


Tags: lambda用户脚本supportexecuteseleniumdocument按钮
1条回答
网友
1楼 · 发布于 2024-06-07 15:43:56

这是一种“黑客”方法,但您可以检查URL,直到它更改以确认成功登录

例如,在尝试登录时,您的url可能如下所示: https://www.yoururl.com/login

现在获取成功登录的url:

https://www.yoururl.com/dashboard

现在您可以编写一个循环来获取当前URL并进行检查,下面我将列出两个可以使用的示例。您需要修改它以适合您的具体情况

您可以使用.current_url方法来帮助您做到这一点

while browser.current_url == 'https://www.yoururl.com/login':
    # still at the login page
    pass

print("Successful sign in!")

while browser.current_url != 'https://www.yoururl.com/dashboard':
    # still at the login page
    pass

print("Successful sign in!")

相关问题 更多 >

    热门问题