在测试非角度js网站时问题与量角器

时间:2016-10-21 07:36:25

标签: javascript angularjs protractor

我目前正在使用量角器测试非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的链接。应该弹出的登录页面。但是当我运行测试并点击链接时,登录页面不会弹出。

请告诉我我做错了什么?

2 个答案:

答案 0 :(得分:0)

量角器看起来是同步的,因为它在移动到下一个动作之前等待角度稳定。因此,如果以上是一个角度页面,它将:

  • 加载页面,然后量角器将等待角度(等待页面稳定)
  • 告诉selenium webdriver找到该元素并单击它。

非角度页面中,将忽略同步设置为正确方向的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,
        },
相关问题