如何使用wdio处理窗口弹出窗口?

时间:2018-02-27 01:12:14

标签: javascript selenium webdriver webdriver-io

我正在尝试通过webdriverio处理facebook auth对话框弹出窗口。问题是我似乎无法定位facebook注册的电子邮件/密码字段。

这是我的代码:

it('redirects after signup', () => {
    browser.url('/');

    const mainTab = browser.getCurrentTabId();
    browser.waitForExist('[data-test="facebook-login-button"]');
    browser.click('[data-test="facebook-login-button"]');

    // fb login form
    browser.waitForExist('#email');
    browser.setValue('#email', this.fbAccount.email);
    browser.setValue('#pass', this.fbAccount.password);
    browser.click('input[type="submit"]');

    // fb login authorization
    browser.waitForExist('button[type="submit"]');
    browser.click('button[type="submit"]');

    browser.switchTab(mainTab);
    browser.waitForExist('[data-test="intro-title"]');
});

我还试图通过执行以下操作等到标签打开

browser.waitUntil(() => browser.getUrl().indexOf('facebook.com') > -1);

另一种尝试是更明确地将标签切换到facebook标签

browser.switchTab(   
 browser.windowHandles().value[browser.windowHandles().value.length]
);

所有这些变体只会导致browser.waitForExist('#email');失败(即超时并且在30秒后没有找到电子邮件输入)。话虽如此,弹出窗口的确打开了,确实很有针对性。即使我手动尝试聚焦wdio,webdriver或selenium也找不到相关元素。

这种事情应该如何运作?我究竟做错了什么?是否有建议使这种测试成功?

0 个答案:

没有答案