【问题标题】:Running IE as a different user with Selenium Webdriver in Java在 Java 中使用 Selenium Webdriver 以不同用户身份运行 IE
【发布时间】:2013-08-02 13:18:56
【问题描述】:

有谁知道我如何使用 JAVA 使用“以不同用户身份运行”功能让 selenium 运行 IE 会话?我不知道我什至要如何设置它,而且谷歌没有提出任何东西,所以也许我在某个地方搜索错误的东西?

为了详细说明我为什么需要这样做,我正在测试的网站是一个内部平台,并使用用户登录凭据/Windows 帐户详细信息来确定他们的角色、他们拥有哪些链接、他们可以查看的数据等.

目前,我可以作为特定用户(经理、数据管理员等)运行测试的唯一方法是在运行测试之前以该用户身份登录机器。当我有多个用户帐户要测试并且正在使用 GRID2 运行 Webdriver 时,这实际上是不可能的(所以我有一组机器在队列出现时从队列中提取测试)。

手动运行测试时,我可以简单地右键单击并选择 ie 快捷方式上的“以不同用户身份运行”选项,所以我想如果我能找到一种方法在通过 webdriver 运行它时复制它,这将解决我的问题。

感谢您的任何建议或帮助。

【问题讨论】:

    标签: java internet-explorer webdriver


    【解决方案1】:

    也许您还可以在您的 GRID 中为不同用户设置机器,并将其反映在环境中的能力。 当然,它确实需要您的 GRID 中的更多机器。不过,我自己还没有尝试过。

    【讨论】:

    • 感谢朋友的建议,我确实考虑过这样做,但不幸的是,我已经将我的环境功能用于其预期目的(令人恼火的是,我们这里的系统设置为访问开发版您必须在 dev 域中的机器上的网站,并转到与 URL 相关的 URL,并且对于所有 envs、test、uat、preprod 等都是一样的,垃圾!)
    【解决方案2】:

    我得到的唯一解决方案是使用机器人类打开新会话。 实际上 IE 并没有提供任何打开新会话的快捷方式,所以我们必须通过机器人来执行此操作。

    此代码将为您打开一个新会话。祝你好运

        System.setProperty("webdriver.ie.driver","./IEDriverServer.exe");
        WebDriver driver = new InternetExplorerDriver();
        driver.get("http://www.google.com/");
    
        try{
            Robot robot=new Robot();
            robot.keyPress(KeyEvent.VK_ALT);
            Thread.sleep(3000);
            robot.keyPress(KeyEvent.VK_F);
            robot.keyRelease(KeyEvent.VK_ALT);
            robot.keyRelease(KeyEvent.VK_F);
            robot.keyPress(KeyEvent.VK_I);
            robot.keyRelease(KeyEvent.VK_I);
    
        }
        catch(Exception ex){
            System.out.println(ex.getMessage());
        }
    

    【讨论】:

      【解决方案3】:

      如果情况变得更糟,您可以使用不同的用户名和密码设置一个文件,读入它们,通过工厂类确定您需要的用户,然后根据您需要的参数选择每个测试的用户看着。如果你这样做,当你在多线程上运行时,它仍然会拉入正确的用户来登录。

      我认为这不是您的主要目标,而至少是次要解决方案。

      【讨论】:

        【解决方案4】:

        很可能我已经做到了。 简单的方法如果你通过 eclipse 运行 selenium。 只需通过右键单击以其他用户身份打开来打开 Eclipse IDE。

        创建 Java>Runnable JAR 文件的更难方法如下文所述。

        https://www.joecolantonio.com/selenium-executable-java-test/

        您应该是本地计算机上的管理员才能执行此操作,并且应该拥有 Windows 帐户 iusername 和 user:userA user:userA1 等的密码。 打开多个命令提示符

        C:\>runas /user:domainname\userA cmd
        C:\>runas /user:domainname\userA1 cmd
        C:\>runas /user:domainname\userA2 cmd
        

        C:\>runas /user:domainname\username cmd
        

        输入管理员密码: 正在尝试以用户 "techblogger-pc\administrator" 身份启动 cmd ... 然后在命令窗口中输入相同的 jar 文件 像 c:\runnableselenium.jar 和炸弹一样,您的所有 jar 都使用不同的凭据运行 想办法以某种方式在测试页面上查看登录的用户名。

        【讨论】:

          【解决方案5】:

          我不知道你为什么要这样做,我不相信这是可能的。但是,我对您的最终目标做了一些猜测,并为每个目标提供了解决方案。

          如果你想重新开始(没有缓存或任何东西),那么只需启动一个新的 IEDriver 实例。

          如果你想用不同的设置启动它,你可以传入你的desired capabilities.

          如果您还有其他完全想做的事情,请随时回复并说明您的情况。

          【讨论】:

          • 已经用更多的背景更新了我最初的问题,很抱歉我让它有点缺乏。
          • 我看到了你的扩展解释,我相信你唯一的解决方案是使用 Java Robots 来自动化。我不相信有任何方法可以用纯硒做这样的事情。
          • Java 机器人?你是什​​么意思?还有,我可以做一个给我喝咖啡吗?! @:D
          • 你也可以试试 Sikuli - 参考 sikuli.org
          【解决方案6】:

          看来使用Windows Credential Manager 可以做到这一点。我能够手动设置站点的用户名和密码,然后使用 Selenium 驱动到那里,并且我指定的备用凭据用于身份验证。

          下一步是在运行时设置凭据,powershell 应该可以做到这一点。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-05-05
            • 2018-10-12
            • 2017-09-17
            • 2010-11-04
            • 2019-07-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多