1

我有一个包含社交登录方案(Facebook 和 twitter)的网络应用程序。我目前正在通过 NPM 模块browser-perf设置一些 selenium 测试,我注意到有一个preScript可以运行来执行身份验证等。这是文档给出的示例脚本:

{
    preScript: function(browser) {
        return function(browser) {
            return browser.get(cfg.page).then(function() {
                console.log('Filling in Username');
                return browser.elementByCssSelector('.UsernameClass')
            }).then(function(el) {
                return el.type('Username for site');
            }).then(function() {
                console.log('Filling in Password');
                return browser.elementByCssSelector('.PasswordFieldClass');
            }).then(function(el) {
                return el.type(cfg.password.val);
            }).then(function() {
                return browser.elementByCssSelector('.SubmitButton');
            }).then(function(el) {
                console.log('Clicking submit');
                return el.click();
            }).then(function() {
                return browser.sleep(5000);
            });
        }
    }
}

我在考虑如何将它应用到我的网络应用程序中,但唯一的问题是,当单击 Facebook 或 Twitter 登录按钮时,会弹出一个新窗口,并且控制权会从原始脚本中移除。在正常的用例中,用户会填写他们的信息,点击登录,然后控制权将被返回。

有没有办法通过自动化硒测试来处理这个问题?我可以以某种方式获取对弹出窗口的引用吗?

4

2 回答 2

0

这解释了如何创建测试 Facebook 帐户并使用它们来删除会话 cookie,这样您就不必担心弹出窗口,因为它不会显示

使用 Selenium Webdriver 自动登录 Facebook

于 2014-06-07T20:29:24.237 回答
0

您可以使用 wd.newWindow 获取对新窗口的引用,如这些文档中所述 - https://github.com/admc/wd/blob/master/doc/api.md

您只需修改此脚本以单击登录按钮,获取新窗口的句柄,运行登录脚本,您应该会很好。

于 2015-05-12T22:15:12.050 回答