有谁知道怎样处理浏览器验证使用Selenium或自动化过程中任何其他工具?
Answer 1:
编辑2015年:
这个答案已经过时。 如今的webdriver支持认证! 请参阅如何使用Java来处理身份验证弹出与硒的webdriver
原来的答案:
这不是由硒处理得非常好。
您可以尝试使用http://username:password@example.com/yourpage
而不是仅仅http://example.com/yourpage
不过,据我所知,火狐仍然会弹出一个浏览器对话框,请求确认。
你可以试试机器人 ,如果你使用的是Java(或任何类似的工具,如AutoIt的 )。
你可以使用driver.manage().addCookie()
如果你使用的webdriver。
或自定义FirefoxProfile一个已经通过了认证一次。
Answer 2:
我在这度过了天 - 从字面上。 想我的公司内部网络让过去的浏览器级别的认证,达到一个应用程序。 解决的办法是使用“unsername:密码@”在URL中组件, 但在登录URL的末尾添加斜线 。
所以总的登录网址看起来像这样(请注意“/”后yourpage):
HTTP://用户名:password@example.com/yourpage/
工程与的Watir,水豚和硒的webdriver。
Answer 3:
我已经在网络上读到的一切对我没有帮助。 因此作出要求,如在此之前:
driver.get(url);
你必须运行这样一个新的线程:
RunScript runScript = new RunScript();
runScript.start();
在这种情况下,你可以自由地输入登录名和密码对follwing类的另一个线程
public class RunScript extends Thread {
@Override
public void run() {
try {
File file = new File("D:\\jacob-1.18-x86.dll");
System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());
AutoItX autoIt = new AutoItX();
Thread.sleep(2000);
autoIt.winActivate("yourWindowName", "");
autoIt.winWaitActive("yourWindowName");
if (autoIt.winExists("yourWindowName")) {
autoIt.send("username{TAB}", false);
autoIt.send("password{Enter}", false);
}
}
} catch (InterruptedException ex) {
//
}
}
}
Answer 4:
您可以使用Java Robot类与硒2 /硒的webdriver使用Firefox
WebDriver driver = new FirefoxDriver();
driver.get("http://localhost:9990");
WebElement myDynamicElement = driver.findElement(By.id("app"));
Alert alert = driver.switchTo().alert();
try {
Robot robot = new Robot();
alert.sendKeys("username");
robot.keyPress(KeyEvent.VK_TAB);//go to password feild
robot.keyPress(KeyEvent.VK_P);
robot.keyPress(KeyEvent.VK_A);
robot.keyPress(KeyEvent.VK_S);
robot.keyPress(KeyEvent.VK_S);
robot.keyPress(KeyEvent.VK_ENTER);
} catch (AWTException e) {
e.printStackTrace();
}
}
使用硒与机器人
http://docs.oracle.com/javase/1.5.0/docs/api/java/awt/Robot.html
Answer 5:
通过自动它,sikuli等只是浪费你的时候,你会在你的CI解决方案运行,使用多种类型的浏览器/操作系统/版本/决议等所有的黑客
正确地做到这一点是确定的认证实际方法和使用REST协议例如执行登录。
我用它来获得JSESIONID cookie并把它插入到硒驱动程序。 上提示:去DOMIAN第一的非退出网址,然后设置cookie,然后去到所需的网址 - 您登录项。
使用方法:休息客户端身份验证,以获得JSESSION ID
而有了这个信息:
browser().navigate(foo.getUrl()+"non-exiting-url");
//the information got from the rest client login:
Cookie cookie = new Cookie(name, value, domain, path, expiry, isSecure, isHttpOnly);
try {
driver.manage().addCookie(cookie);
} catch (Exception e) {
System.out.println(e.toString());
}
browser().navigate(foo.getUrl());
Answer 6:
您可以使用自动脚本IT来处理这个问题
WinWaitActive("[CLASS:Chrome_WidgetWin_1]", "", time)
Send("user")
Send("{TAB}")
Send("pass")
Send("{ENTER}")
Answer 7:
使用Chrome 70和其他版本:
http://username:password@example.com/yourpage