Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Selenium Webdriver处理弹出窗口_Javascript_Selenium - Fatal编程技术网

Javascript Selenium Webdriver处理弹出窗口

Javascript Selenium Webdriver处理弹出窗口,javascript,selenium,Javascript,Selenium,我正在尝试自动化我的项目的登录场景。 点击URL后,甚至在页面加载之前,还会出现一个弹出的身份验证窗口。 如果我们不通过那个窗口,我们就看不到主页 问题是,一旦弹出窗口出现,我就无法使用firebug检查元素,它不允许我单击其他任何地方 我试图处理窗口,但控件仍然无法进入用户名和密码文本框。 我试过windowhandle,机器人类,但没用。 请任何人都能帮忙 下面是一段代码:- Set<String> handles = driver.getWindowHandles(); //

我正在尝试自动化我的项目的登录场景。 点击URL后,甚至在页面加载之前,还会出现一个弹出的身份验证窗口。 如果我们不通过那个窗口,我们就看不到主页

问题是,一旦弹出窗口出现,我就无法使用firebug检查元素,它不允许我单击其他任何地方

我试图处理窗口,但控件仍然无法进入用户名和密码文本框。 我试过windowhandle,机器人类,但没用。 请任何人都能帮忙

下面是一段代码:-

Set<String> handles = driver.getWindowHandles(); // get all window handles
        System.out.println(handles.size());
        Iterator<String> iterator = handles.iterator();
        while (iterator.hasNext()){
            subWindowHandler = iterator.next();
        }
        driver.switchTo().window(subWindowHandler);
also the robot class:-

 Robot rb = new Robot();

                //Enter user name by ctrl-v
                StringSelection username = new StringSelection("myusername");
                Toolkit.getDefaultToolkit().getSystemClipboard().setContents(username, null);  
                Thread.sleep(2000);
river.switchTo().window(mainHandle);
                rb.keyPress(KeyEvent.VK_A);
                    rb.keyRelease(KeyEvent.VK_A);
                    rb.keyPress(KeyEvent.VK_M);
                    rb.keyRelease(KeyEvent.VK_M);
                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 pass = new StringSelection("password");
                Toolkit.getDefaultToolkit().getSystemClipboard().setContents(pass, 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);

                //wait
                Thread.sleep(5000);
Set handles=driver.getWindowHandles();//获取所有窗口句柄
System.out.println(handles.size());
迭代器迭代器=handles.Iterator();
while(iterator.hasNext()){
subWindowHandler=iterator.next();
}
driver.switchTo().window(子WindowHandler);
还有机器人类:-
Robot rb=新机器人();
//按ctrl-v键输入用户名
StringSelection用户名=新StringSelection(“myusername”);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(用户名,null);
《睡眠》(2000年);
river.switchTo()窗口(主手柄);
rb.keyPress(KeyEvent.VK_A);
rb.keyrease(KeyEvent.VK_A);
rb.keyPress(KeyEvent.VK_M);
rb.keyrease(KeyEvent.VK_M);
rb.keyPress(KeyEvent.VK_控件);
rb.keyPress(KeyEvent.VK_V);
rb.keyrease(KeyEvent.VK_V);
rb.keyRelease(KeyEvent.VK_控件);
//“密码输入”字段的选项卡
rb.keyPress(KeyEvent.VK_选项卡);
rb.keyRelease(KeyEvent.VK_选项卡);
《睡眠》(2000年);
//通过ctrl-v输入密码
StringSelection pass=新StringSelection(“密码”);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(通过,空);
rb.keyPress(KeyEvent.VK_控件);
rb.keyPress(KeyEvent.VK_V);
rb.keyrease(KeyEvent.VK_V);
rb.keyRelease(KeyEvent.VK_控件);
//按回车键
rb.keyPress(KeyEvent.VK_ENTER);
rb.keyRelease(KeyEvent.VK_输入);
//等等
睡眠(5000);

无法使用Selenium自动执行基于浏览器的身份验证

  • 如果您的身份验证是基于http的,请尝试使用格式-
    http://username:password@example.com/
    而不是
    example.com

  • 如果您仍然希望实现自动化,那么请使用第三方插件,如Selenium。AutoIt用于自动化基于windows的桌面应用程序,包括浏览器。这里有一些你可以参考的链接-

  • 您还可以使用firefox插件,当您打开url时,它会自动验证弹出窗口。但这是一个手动设置,您必须执行一次身份验证,以便插件记住它


希望这能有所帮助。

使用Selenium自动执行基于浏览器的身份验证是不可能的

  • 如果您的身份验证是基于http的,请尝试使用格式-
    http://username:password@example.com/
    而不是
    example.com

  • 如果您仍然希望实现自动化,那么请使用第三方插件,如Selenium。AutoIt用于自动化基于windows的桌面应用程序,包括浏览器。这里有一些你可以参考的链接-

  • 您还可以使用firefox插件,当您打开url时,它会自动验证弹出窗口。但这是一个手动设置,您必须执行一次身份验证,以便插件记住它


希望这有帮助。

你可以做一件事。你可以试试

若我们按下ESC按钮,那个么应用程序会多次停止处理

单击事件后,使用以下代码:-

Robot r = new Robot();
r.keyPress(KeyEvent.VK_ESCAPE);
r.keyRelease(KeyEvent.VK_ESCAPE);
以上代码将为您按ESC键。现在您可以获得查找元素的时间


希望它能帮助你:)

你可以做一件事。你可以试试

若我们按下ESC按钮,那个么应用程序会多次停止处理

单击事件后,使用以下代码:-

Robot r = new Robot();
r.keyPress(KeyEvent.VK_ESCAPE);
r.keyRelease(KeyEvent.VK_ESCAPE);
以上代码将为您按ESC键。现在您可以获得查找元素的时间


希望它能对您有所帮助:)

你好,Girish,在页面加载之前,我尝试过的第一个选项不起作用,身份验证弹出窗口出现了。第二,我们如何将AutoIT与SeleniumWebDriver结合使用来实现u-plzz所描述的自动化,这是一个很大的过程。更新了答案,没有几个链接可以帮助您实现自动化。你好,Girish,第一个选项不起作用,我尝试了,在页面加载之前,身份验证弹出窗口出现。第二,我们如何将AutoIT与SeleniumWebDriver结合使用来实现u-plzz所描述的自动化,这是一个很大的过程。更新了答案,没有几个链接可以帮助您实现自动化。嗨,Shubham,我无法检查身份验证弹出窗口中的元素。它要求首先对该弹出窗口进行输入。嗨,Shubham,我无法检查该验证弹出窗口上的元素。它要求首先对弹出窗口进行输入。