WebDriver - 如何在不修改的情况下打开页面

时间:2014-06-16 14:26:22

标签: java webdriver robot

我需要进入受保护的网站。 安全性需要用户名和密码,但需要使用Windows的图形组件(没有Web代码,例如上传文件)。

为了跳过这一步,我编写了一个小的Awt.Robot,它可以找到并确认“弹出”窗口。

所以我在预期的状态下打开了一个网页。

如何通过WebDriver重新获得此状态的控制权?

某种:

  

​​driver FirefoxDriver = new FireFoxDriver(); driver.get (page already open without modification and authentification);

想法?

4 个答案:

答案 0 :(得分:1)

绕过JS弹出窗口并不容易和直接,使用Robot解决方案是不稳定的。它不适用于远程浏览器等。

通过http://username:password@your-app.com等网址发送用户名和密码。你尝试过类似的东西吗?

 String url = "http://username:password@your-app.com";
 driver.get(url);

答案 1 :(得分:1)

要回答您的问题,无法控制现有的浏览器实例。

一些讨论:

How to use a already opened firefox for testing in Selenium

答案 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通常可以继续。

Explication of Threads execution

更好的理解?