以下是用于处理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文件时,它会打开页面并弹出身份验证。但它没有插入用户名和密码;它等待用户输入。
答案 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可以正常工作。
希望此信息可以帮助您。它不是解决方案,但也许你可以解决它。