我的以下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中的身份验证窗口中提供凭据,那么这对我也有用。
注意:相同的代码可以更早地运行,但现在它无法正常工作
答案 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