Java 在身份验证弹出窗口中输入用户名/密码

Java 在身份验证弹出窗口中输入用户名/密码,java,eclipse,selenium,awtrobot,Java,Eclipse,Selenium,Awtrobot,当我从Eclipse(selenium)启动网站时,会弹出一个身份验证框,如下所示: 这里我无法输入用户名和密码,以下是我尝试过的内容: 1) 将句柄切换到弹出窗口并标识Xpath 2) 正在URL中发送用户名和密码() 3) Sikuli(但在不同系统中执行时需要图像捕获) 4) 使用机器人功能 Robot rb = new Robot(); StringSelection username = new StringSelection("XXXXX");

当我从Eclipse(selenium)启动网站时,会弹出一个身份验证框,如下所示:

这里我无法输入用户名和密码,以下是我尝试过的内容:
1) 将句柄切换到弹出窗口并标识Xpath
2) 正在URL中发送用户名和密码()
3) Sikuli(但在不同系统中执行时需要图像捕获)
4) 使用机器人功能

        Robot rb = new Robot();
        StringSelection username = new StringSelection("XXXXX");
        System.out.println("Entering username");
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(username, null);            
        rb.keyPress(KeyEvent.VK_CONTROL);
        rb.keyPress(KeyEvent.VK_V);
        rb.keyRelease(KeyEvent.VK_V);
        rb.keyRelease(KeyEvent.VK_CONTROL);

        //tab to password entry field
        rb.keyPress(KeyEvent.VK_TAB);
        rb.keyRelease(KeyEvent.VK_TAB);
        Thread.sleep(2000);

        //Enter password by ctrl-v
        StringSelection pwd = new StringSelection("YYYYYYY");
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(pwd, null);
        rb.keyPress(KeyEvent.VK_CONTROL);
        rb.keyPress(KeyEvent.VK_V);
        rb.keyRelease(KeyEvent.VK_V);
        rb.keyRelease(KeyEvent.VK_CONTROL);

        //press enter
        rb.keyPress(KeyEvent.VK_ENTER);
        rb.keyRelease(KeyEvent.VK_ENTER);

到目前为止,上述所有操作都不起作用,只是在到达网站(driver.get(URL))之后,控件似乎没有返回到eclipse,使用AutoIT脚本填充该窗口。这是使用Selenium在Windows中优雅地处理此问题的唯一方法。使用AutoIt在Selenium中选中Handle Windows-based Authentication(基于Windows的身份验证)弹出窗口。下面的代码应该可以工作,可以重构:)


更新:也尝试过AutoIT,不起作用您是否先测试了AutoIT脚本?@VikasNehaOjha:是的,我在启动url后/启动url前调用了脚本,并等待了一段时间,但是脚本没有运行,我在eclipse中在启动url和调用AutoIT脚本之间添加了一条打印语句,这永远不会被执行。有人愿意回答否决这个答案的原因吗?我已经用了很多年了,知道怎么做。
driver.navigate().to("url");
StringSelection selection = new StringSelection("username");
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
Thread.sleep(5000);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(2000);
selection = new StringSelection("password");
clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(1000);
robot.keyPress(KeyEvent.VK_ENTER);  
robot.keyRelease(KeyEvent.VK_ENTER);