我需要进入受保护的网站。 安全性需要用户名和密码,但需要使用Windows的图形组件(没有Web代码,例如上传文件)。
为了跳过这一步,我编写了一个小的Awt.Robot,它可以找到并确认“弹出”窗口。
所以我在预期的状态下打开了一个网页。
如何通过WebDriver重新获得此状态的控制权?
某种:
driver FirefoxDriver = new FireFoxDriver(); driver.get (page already open without modification and authentification);
想法?
答案 0 :(得分:1)
绕过JS弹出窗口并不容易和直接,使用Robot解决方案是不稳定的。它不适用于远程浏览器等。
通过http://username:password@your-app.com
等网址发送用户名和密码。你尝试过类似的东西吗?
String url = "http://username:password@your-app.com";
driver.get(url);
答案 1 :(得分:1)
答案 2 :(得分:0)
谢谢你,尼勒什,我有个主意。我为可能遇到同样困难的人写信。我的解决方案非常简单,我实例化我的驱动程序,在 get(url) 之前,我运行 AWT.Robot 现在是一个Thread。这使我不会被 driver.get(url);
的阻止属性所困扰private boolean openBrowserOnPage() {
try {
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
// run the robot which extends Thread
RobotHabile robot = new RobotHabile();
robot.start();
// Open the browser
driver.get(url);
// Wait for robot action
while(robot.isAlive()){
// not much, wait
}
return true;
} catch (Exception e) {
e.printStackTrace();
System.out.println("Erreur : Impossible de se connecter/acceder au service '" + url + "'");
}
return false;
}
希望能帮到某人
答案 3 :(得分:0)
对于普鲁斯,我会再试一次。
如果我使用WebDriver.driver.get(http://localhost/repository);
,则会显示绿色弹出窗口,并且全部显示。该方法永远不会完成。的 (1) 即可。这个邪恶的弹出窗口不是一个Web组件(不是div,span,link等),它只是一个操作系统组件(这里是Windows)。用WebDriver操纵这个是不可能的。
因此,在WebDriver.driver.get(http://localhost/repository);
之前,我使用了一个新类 RobotHabile ,它扩展了 线程 ,使用 AWT.Robot 。
AWT.Robot 可以使用键盘,因此当出现邪恶弹出窗口( 绿色 )时,线程1是等待弹出窗口和RobotHabile robot = new RobotHabile();
robot.start();
使用线程2我可以按下我的ID,按下选项卡以切换密码,按下我的密码,然后按完成 (2) 。机器人不会目标ID和密码字段。但由于弹出窗口已经有焦点,我只能填写任何字符和制表键并输入。此时邪恶的弹出窗口正在验证,线程1通常可以继续。
更好的理解?