【问题标题】:Authentication Popup using Selenium Webdriver Python使用 Selenium Webdriver Python 的身份验证弹出窗口
【发布时间】:2016-09-21 18:41:25
【问题描述】:

我能够发送密钥来处理使用 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}")

关于如何使用任务计划程序自动运行此代码 (.py) 是否有更好的方法?

【问题讨论】:

  • 更新:仅当有活动的桌面会话时,代码才能在 .py 中工作。每当计算机在计划运行之前检测到不活动时,任务就不会推进。有没有办法可以解锁系统并在此过程后将其锁定。顺便说一句,我添加了 pywinauto 以将控制台 Windows 和 SetFocus 最小化到 Chrome。谢谢!

标签: python selenium-webdriver scheduled-tasks win32com pywinauto


【解决方案1】:

在活动桌面会话中与 .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。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-09
    • 2018-10-21
    • 2019-01-22
    • 1970-01-01
    • 2017-06-26
    • 2022-01-19
    • 1970-01-01
    • 2020-03-16
    相关资源
    最近更新 更多