【问题标题】:Issue with Protractor while testing a non angular js website测试非角度 js 网站时量角器出现问题
【发布时间】:2016-10-21 07:36:25
【问题描述】:

我目前正在使用量角器测试一个非 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');
    }));

}); 

测试场景:我的测试打开提到的 URL 并选择带有 href=#partner 的链接。应该弹出的登录页面。但是当我运行测试并单击链接时,登录页面不会弹出。

请告诉我我做错了什么?

【问题讨论】:

    标签: javascript angularjs protractor


    【解决方案1】:

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

    • 加载页面,然后 Protractor 将等待 angular(等待页面稳定)
    • 告诉 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');
        });
      });
    });
    

    【讨论】:

      【解决方案2】:

      硬编码等待不是一个好习惯。 如果你使用 jasmine 进行报告,你可以在 conf.js 中加入如下代码:

      jasmineNodeOpts: {
              defaultTimeoutInterval: 600000,
              },
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-24
        • 2023-03-30
        • 2019-01-18
        • 1970-01-01
        • 1970-01-01
        • 2014-10-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多