如何使用python(加java)在selenium中处理windows身份验证弹出窗口

2024-04-19 05:37:54 发布

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

enter image description here

我试过下面的代码,但对我不起作用

from selenium import webdriver
driver=webdriver.Chrome('D:/BrowsersDriver/chromedriver.exe')
driver.get('https://username:password@www.engprod-charter.net/')

后来我尝试在Java中使用同样的方法

driver.get('https://username:password@www.engprod-charter.net/')

但不幸的是,它在任何浏览器中都不适合我。我是不是丢了什么东西?

然后我尝试用Java语言编写AutoIT

Runtime.getRuntime().exec("D:\\FirefoxWindowAuthentication.exe");
driver.get("https://www.engprod-charter.net/")

它在Firefox&IE中运行良好,但在Chrome中不起作用。有没有什么方法可以至少在selenium中使用python实现这一点,在Java中我缺少什么。请给我提个解决办法,试了很多


Tags: 方法httpsgetnetwwwdriverseleniumusername
2条回答

我得到了这个解决方案,它对所有三种浏览器(火狐、Chrome和IE)都很有效。

from selenium import webdriver
import time
import win32com.client

driver=webdriver.Firefox()
driver.maximize_window()
driver.get('https://www.engprod-charter.net/')
shell = win32com.client.Dispatch("WScript.Shell")   
shell.Sendkeys("username")  
time.sleep(2)
shell.Sendkeys("{TAB}")
time.sleep(2)
shell.Sendkeys("password") 
time.sleep(2)
shell.Sendkeys("{ENTER}")
time.sleep(2)
driver.quit()

注意:如果尚未下载,请安装win32com.client。使用下面的命令安装win32com.client

pip install pypiwin32

如果有任何问题,请尝试以下解决方案并通知我:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys 
import time

driver=webdriver.Firefox()
driver.get('https://www.engprod-charter.net/')
time.sleep(3)
driver.switch_to.alert.send_keys(username + Keys.TAB + password)
time.sleep(3)
driver.switch_to.alert.accept()

Here是Windows上使用第三方autoHK库的IE解决方案

相关问题 更多 >