javascript - Selenium Webdriver 处理弹出窗口

标签 javascript selenium

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

问题是一旦弹出窗口出现,我就无法使用 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);

最佳答案

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

如果我们按 ESC 按钮,应用程序会多次停止处理。

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

Robot r = new Robot();
r.keyPress(KeyEvent.VK_ESCAPE);
r.keyRelease(KeyEvent.VK_ESCAPE);

上面的代码将为您按 ESC 键。现在您可以腾出时间来查找该元素。

希望对你有帮助:)

关于javascript - Selenium Webdriver 处理弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32517254/

相关文章:

javascript - 如何调试适用于我的桌面但不适用于我的手机的 Javascript?

javascript - 如何访问 "object Window"中的 javascript 函数

node.js - 使用 Nightwatch 在 headless Safari 中运行 e2e 测试

javascript - 关闭 Nightwatch 中的打印对话框?

javascript - 选择对象数组中的唯一项目

Javascript 间隔不起作用

javascript - 如果键是字符串,数组显示为空?

python - 如何从动态网站 python selenium 中检索表

java - 使用 Selenium WebDriver 获取当前页面的 URL

javascript - 如何使用 selenium 在 Youtube 中向下滚动?