繁体   English   中英

使用 Selenium Webdriver Python 的身份验证弹出窗口

[英]Authentication Popup using Selenium Webdriver Python

我能够发送密钥来处理使用 Selenium 和 win32com.client 的站点的身份验证弹出窗口。 当我手动运行代码(运行 Jupyter Notebook)时,它工作正常。

当我将 .ipynb 转换为 .py 并安排它使用 Windows 任务计划程序自动运行时,会发生错误。 它卡在身份验证弹出窗口中。

我尝试了以下选项:

1.) 这在笔记本中运行良好

shell = comclt.Dispatch("WScript.Shell")
driver = webdriver.Chrome(chrome_path)
driver.maximize_window()
driver.get(url)
shell.SendKeys("username", + "{TAB}" + "password" + "{TAB}" + "{ENTER}")

2.) 只是尝试一些替代方案并在笔记本中工作

shell = comclt.Dispatch("WScript.Shell")
driver = webdriver.Chrome(chrome_path)
driver.maximize_window()
driver.get(url)

try:
    alert = driver.switch_to_alert().accept()
    shell.SendKeys("username", + "{TAB}" + "password" + "{TAB}" + "{ENTER}")

except NoAlertPresentException:
    shell.SendKeys("username", + "{TAB}" + "password" + "{TAB}" + "{ENTER}")

关于如何使用 Task Scheduler 自动运行此代码 (.py) 是否有更好的方法?

在活动桌面会话更新中与 .ipynb 和 py 配合使用:添加了代码以最小化控制台窗口类

app = Application().Connect(title ='path' + 'python.exe', class_name = 'ConsoleWindowClass')
cwc = app.ConsoleWindowClass
cwc.Minimize()

app = Application().Connect(title ='page', class_name = 'Chrome_WidgetWin_1')
widget = app.Chrome_WidgetWin_1
widget.Minimize()
time.sleep(2) # will allow the some time before executing other task
widget.Maximize()
widget.SetFocus()
time.sleep(3)
shell.SendKeys("username", + "{TAB}" + "password" + "{TAB}" + "{ENTER}")

当计算机被锁定时它不会工作。 解决方法是为鼠标事件发送一个 pyautogui。

同样,这可能不是最好的解决方案,但这是我的临时解决方案,直到您采用最佳方法:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM