使用Selenium Web驱动程序弹出处理Windows身份验证

时间:2013-01-31 08:15:13

标签: selenium selenium-webdriver autoit

以下是用于处理Windows身份验证弹出的AutoIt脚本(UI3_Authentication.au3)。

AutoItSetOption("WinTitleMatchMode","2")  
WinWait("Authentication Required")   
$title = WinGetTitle("Authentication Required") ; retrives whole window title   
$UN=WinGetText($title,"User Name:")  
ControlSend($title,"",$UN,"test");Sets Username  
$PWD=WinGetText($title,"Password:")  
Send("{TAB 1}")  
ControlSend($title,"",$PWD,"test1234");Sets PWD  
Send("{ENTER}")  

以下是我对上述AutoIt exe文件的Selenium代码调用。

package tests;

import java.io.IOException;  
import org.openqa.selenium.WebDriver;  
import org.openqa.selenium.firefox.FirefoxDriver;  

public class Handling_Windows_Based_Prompt {

public static void main(String[] args) throws IOException{  
WebDriver c1 = new FirefoxDriver();  
c1.get(“http://www.test.com”);  
        Runtime.getRuntime().exec("C:\\POM_Newdemo\\EF_Automation_Demo\\UI3_Authentication.exe");

}  
}

当我运行上面的Selenium文件时,它会打开页面并弹出身份验证。但它没有插入用户名和密码;它等待用户输入。

3 个答案:

答案 0 :(得分:3)

我解决了这个问题。 实际上,这是我的坏事。以前,我的代码是这样的:

c1.get(“http://www.test.com”);  
    Runtime.getRuntime().exec("C:\\POM_Newdemo\\EF_Automation_Demo\\UI3_Authentication.exe");

我在get()之前添加了自动代码,如下所示,并且有效:

Runtime.getRuntime().exec("C:\\POM_Newdemo\\EF_Automation_Demo\\UI3_Authentication.exe");
c1.get(“http://www.test.com”);

答案 1 :(得分:0)

这适用于我的ChromeDriver。希望它会有所帮助

WinWait("data:, - Google Chrome","","10") ; this is the name of the window, according to AUTOIT v3 window info
If WinExists("data:, - Google Chrome","") Then
WinActivate("data:, - Google Chrome") ; set control to the window for proxy authentication
Send("putUsernameHere{TAB}") ; send username and press TAB
WinActivate("data:, - Google Chrome") ; again set control to our window, in case that we have clicked somewhere else
Send("putPasswordHere{ENTER}") ; send the password and press enter
EndIf

答案 2 :(得分:0)

我遇到了同样的问题。 AutoIt适用于硒,如果它在"打开"桌面。 如果我使用具有开放会话的虚拟机(看到正在发生的事情),甚至最小化,它工作正常,但如果我关闭远程桌面(会话结束),AutoIt脚本显示成功但不执行任何操作。

"解决方案"是为了保持虚拟机"打开"通过连接TightVNC。即使关闭窗口,VNC也会使登录保持活动状态,AutoIt可以正常工作。

希望此信息可以帮助您。它不是解决方案,但也许你可以解决它。