Login 量角器测试超时

Login 量角器测试超时,login,timeout,protractor,angularjs-e2e,Login,Timeout,Protractor,Angularjs E2e,我正在运行一个关于量角器的登录测试。 登录页面是非角度的,但其余页面是。 在登录之后,为了确保它通过了,我在页面中搜索特定的元素,过了一会儿它进入超时 测试: it('Should login using Email & Password', function () { browser.driver.findElement(by.id('userName_str')).sendKeys("testmail@testmail.com"); browser.driver.find

我正在运行一个关于量角器的登录测试。 登录页面是非角度的,但其余页面是。 在登录之后,为了确保它通过了,我在页面中搜索特定的元素,过了一会儿它进入超时

测试:

it('Should login using Email & Password', function () {
   browser.driver.findElement(by.id('userName_str')).sendKeys("testmail@testmail.com");
   browser.driver.findElement(by.id('password')).sendKeys("Password");
   browser.driver.findElement(by.xpath("//input[contains(@value,'Log In')]")).click();


   expect($('[data-ui-sref="myApps"]').isDisplayed()).toBeTruthy();
});
这是我在一段时间后(用户登录并看到主页后)得到的结果:

值得一提的是,我正在使用

onPrepare: function() {
// for non-angular page
browser.ignoreSynchronization = true;
}
在配置文件中

任何帮助都将不胜感激。
谢谢。

ignoreSynchronization
设置回默认值
false

我认为您应该在规范内的
afterEach()
中执行此操作:

describe("My test", function () {

    afterEach(function () {
        browser.ignoreSynchronization = false;
    });

    it('Should login using Email & Password', function () {
         browser.ignoreSynchronization = true;      

         browser.driver.findElement(by.id('userName_str')).sendKeys("testmail@testmail.com");
         browser.driver.findElement(by.id('password')).sendKeys("Password");
         browser.driver.findElement(by.xpath("//input[contains(@value,'Log In')]")).click();

         expect($('[data-ui-sref="myApps"]').isDisplayed()).toBeTruthy();
    });

});

得到了同样的结果。我仍然不确定如何使用ignoreSynchronization参数以及它是否与我的问题有关。@user2880391好的,你知道它挂在哪一行吗?是的。在browser.driver.findElement(by.xpath(//input[contains(@value,'Log-In')])之后。单击();它指向主页,然后挂起。@user2880391好的,如果添加
browser.ignoreSynchronization=false就在这一行之后,然后添加
browser.waitForAngular()
?我不确定这是最佳做法,也许在我问这个问题后有些东西发生了变化,但目前这部分包括以下内容(并且有效):browser.driver.findelelement(by.id('userName_str')).sendKeys(“testmail@testmail.com"); browser.driver.findElement(by.id('password')).sendKeys('password');browser.driver.findElement(by.xpath(//input[contains(@value,'Log-In')]))。单击();浏览器。睡眠(5000);browser.switchTo().defaultContent();browser.ignoreSynchronization=false;流量超时(5000);嘿,显然这只发生在Chrome上,但在FF上是有效的。有什么想法吗?谢谢
describe("My test", function () {

    afterEach(function () {
        browser.ignoreSynchronization = false;
    });

    it('Should login using Email & Password', function () {
         browser.ignoreSynchronization = true;      

         browser.driver.findElement(by.id('userName_str')).sendKeys("testmail@testmail.com");
         browser.driver.findElement(by.id('password')).sendKeys("Password");
         browser.driver.findElement(by.xpath("//input[contains(@value,'Log In')]")).click();

         expect($('[data-ui-sref="myApps"]').isDisplayed()).toBeTruthy();
    });

});