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

问题描述 投票:0回答:4

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

为了跳过这一步,我编写了一个小型 Awt.Robot,它可以查找并验证“弹出”窗口。

所以我的网页以预期的状态打开。

如何使用 WebDriver 从这种状态重新获得控制权?

某种:

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

想法?

java webdriver awtrobot
4个回答
1
投票

回答你的问题,无法控制已经存在的浏览器实例。

一些讨论:

如何使用已打开的 Firefox 在 Selenium 中进行测试


1
投票

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

通过

http://username:[email protected]
等 url 发送用户名和密码。你尝试过像下面这样的吗?

 String url = "http://username:[email protected]";
 driver.get(url);

0
投票

多亏了你,尼勒什,我有了一个主意。我写这篇文章是为了任何可能遇到同样困难的人。我的解决方案非常简单,我实例化我的驱动程序,然后在 get(url) 之前运行我的 AWT.Robot 现在是一个线程。这让我不会被 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;
    }

希望能帮助别人


0
投票

对于Purus,我会再试一次。

如果我使用

WebDriver.driver.get(http://localhost/repository);
,则会出现绿色弹出窗口,仅此而已。该方法永远不会完成。 (1)。这个邪恶的弹出窗口不是一个 Web 组件(不是 div、span、link 等),它只是一个操作系统组件(这里是 Windows)。用 WebDriver 来操作这个是不可能的。

所以,就在

WebDriver.driver.get(http://localhost/repository);
之前,我使用了一个新类RobotHabile,它扩展了Thread并使用AWT.RobotAWT.Robot可以使用键盘,因此当邪恶的弹出窗口出现时(绿色),线程1正在等待弹出窗口的验证并与我的
RobotHabile robot = new RobotHabile();
 robot.start();

使用线程 2,我可以按我的 ID,按 Tab 键切换到密码,按我的密码,然后按 Enter 完成(2)。机器人不针对 id 和 pwd 字段。但由于弹出窗口已经具有焦点,我只能填充任何字符和 Tab 键并输入。此时邪恶的弹出窗口已验证,线程 1 可以正常继续。

Explication of Threads execution

更利于您理解?

© www.soinside.com 2019 - 2024. All rights reserved.