使用Java中的Selenium Webdriver以不同的用户身份运行IE

时间:2013-08-02 13:18:57

标签: java internet-explorer webdriver

有没有人知道如何使用JAVA利用“以不同用户身份运行”功能运行IE会话?我不知道我是怎么设置这个并且谷歌没有提出任何东西所以也许我在某个地方寻找错误的东西?

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

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

当手动运行测试时,我只需右键单击并选择ie快捷键上的“以不同用户身份运行”选项,因此想想如果我能通过webdriver运行它来找到复制它的方法,这将解决我的问题。 / p>

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

6 个答案:

答案 0 :(得分:1)

很有可能我已经做完了,也许是时候。 简单的方法如果您通过日食运行硒。 只需右键单击以其他用户身份打开来打开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都以不同的凭据运行 找到一种方法以某种方式在测试页上查看已登录的用户名。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我得到的唯一解决方案是使用机器人类打开新会话。 实际上,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 :(得分:0)

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

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:-1)

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

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

如果您想使用其他设置启动它,可以传递desired capabilities.

如果您还有其他事情要做,请随时回复并解释您的情况。