Windows身份验证代码现在不再有效

时间:2018-03-26 12:04:47

标签: python selenium win32com comtypes

我的以下Windows身份验证代码运行状态超过一年。但是在过去的几天里现在工作的时间更长了。我无法确定具体原因。

from selenium import webdriver
import time
import win32com.client

driver=webdriver.Chrome('D:/Software/BrowsersDriver/ChromeDriver/chromedriver.exe')
driver.maximize_window()
driver.get("authentication windows url")
shell = win32com.client.Dispatch("WScript.Shell")   
shell.Sendkeys("username")  
time.sleep(1)
shell.Sendkeys("{TAB}")
time.sleep(1)
shell.Sendkeys("password") 
time.sleep(1)
shell.Sendkeys("{ENTER}")
time.sleep(5)
driver.quit()

我尝试将Chrome驱动程序更改为最新版本,但它仍无法正常工作。一旦出现Windows身份验证,光标将无限制地在用户名文本字段上闪烁,但不输入用户名。当它卡住时,我在控制台中收到消息

2018-04-02 07:09:28,230 INFO: Imported existing <module 'comtypes.gen' from 'C:\Python27\lib\site-packages\comtypes\gen\__init__.pyc'>
2018-04-02 07:09:28,230 INFO: Using writeable comtypes cache directory: 'C:\Python27\lib\site-packages\comtypes\gen'

之前使用的代码相同。我正在使用python 2.7.12和最新版本的chrome驱动程序。

此外,如果某人有一个不同的解决方案或链接,用于在python selenium中的身份验证窗口中提供凭据,那么这对我也有用。

注意:相同的代码可以更早地运行,但现在它无法正常工作

3 个答案:

答案 0 :(得分:1)

你试过吗

driver.switchTo().alert();

driver.switchTo().activeElement();

在输入凭据之前?

然而,如果这有效,我无法解释它之前的原因。

答案 1 :(得分:1)

尝试AutoIT为Windows身份验证创建一个exe,并在需要的地方调用它,如果没有其他工作正常的话。如果您主要使用Pyton,请尝试this

示例代码: -

WinWaitActive("Authentication Required","","120")

If WinExists("Authentication Required") Then
Send("username{TAB}")

Send("password{Enter}")

EndIf

答案 2 :(得分:0)

您可以尝试直接自动键盘?它可能会奏效。您自动执行keyboard

在这里回答了类似的问题 - https://stackoverflow.com/a/49109132/6003362