我目前正在使用量角器测试非Angular js网站。我的代码如下:
describe("Login ", function () {
it("test", co.wrap(function* () {
browser.ignoreSynchronization = true;
yield browser.get("URL");
var elmOK = element(by.css('a[href="#partner"]'))
yield elmOK.click();
expect(browser.getCurrentUrl()).toContain('login');
}));
});
测试场景:我的测试会打开提到的网址,并选择与href = #adpons的链接。应该弹出的登录页面。但是当我运行测试并点击链接时,登录页面不会弹出。
请告诉我我做错了什么?
答案 0 :(得分:0)
量角器看起来是同步的,因为它在移动到下一个动作之前等待角度稳定。因此,如果以上是一个角度页面,它将:
在非角度页面中,将忽略同步设置为正确方向的true。你需要做的是在获取页面和单击元素之间想出自己的睡眠。单击元素后,您还需要等待下一个窗口弹出,将焦点更改为下一个窗口以查看该URL是否包含登录。
browser.ignoreSynchronization = true;
browser.get("URL");
// let the page load
browser.sleep(2000);
element(by.css('a[href="#partner"]')).click().then(() => {
// may have to add sleep in for the page to load
browser.sleep(2000);
// switch to the next window for the popup
browser.driver.getAllWindowHandles().then((windowHandles) => {
let popupLoginHandle = windowHandles[1];
browser.driver.switchTo().window(popupLoginHandle).then(() => {
// check to see if the pop up has a url that contains 'login'
expect(browser.getCurrentUrl()).toContain('login');
});
});
});
答案 1 :(得分:0)
使用硬编码等待不是一个好习惯。 如果您使用jasmine进行报告,可以将以下代码放在conf.js中:
jasmineNodeOpts: {
defaultTimeoutInterval: 600000,
},