我正在尝试通过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也找不到相关元素。
这种事情应该如何运作?我究竟做错了什么?是否有建议使这种测试成功?