Protractor 量角器:测试加载状态

Protractor 量角器:测试加载状态,protractor,Protractor,我正在为我们的web应用程序设置量角器,所有这些都可以正常工作,除了一件事:当有人单击“登录”按钮时,HTTP请求正在运行,该按钮应该具有类“加载”。然而,当我尝试测试这个时,量角器会等待HTTP请求完成,然后再运行预期,然后失败,因为加载类再次被删除 如何断言加载类已添加 describe('Authorization', function() { it('the site loads', () => { browser.get('/'); ex

我正在为我们的web应用程序设置量角器,所有这些都可以正常工作,除了一件事:当有人单击“登录”按钮时,HTTP请求正在运行,该按钮应该具有类“加载”。然而,当我尝试测试这个时,量角器会等待HTTP请求完成,然后再运行预期,然后失败,因为加载类再次被删除

如何断言加载类已添加

describe('Authorization', function() {
    it('the site loads', () => {
        browser.get('/');

        expect(browser.getCurrentUrl()).toBe('http://localhost:8000/#/login');

        element(by.model('vm.credentials.username')).sendKeys('username');
        element(by.model('vm.credentials.password')).sendKeys('password');

        element(by.css('#sign-in')).click();

        expect(element(by.css('#sign-in')).getAttribute('class')).toMatch(/\bloading\b/);
    });
});

根据您的问题,量角器正在执行expect语句和click()函数。量角器是异步且快速的,所以它执行它能执行的所有操作,然后等待承诺/回调返回。尝试先等待单击,然后尝试断言该类。这是你可以做到的-

element(by.css('#sign-in')).click().then(function(){
  expect(element(by.css('#sign-in')).getAttribute('class')).toMatch(/\bloading\b/);
});
另外,如果http请求阻止了您的执行,请尝试等待元素显示。如果显示元素,那么它与验证元素一样好

browser.wait(protractor.ExpectedConditions.visibilityOf($('.loading')), 10000)
.then(function(){
  expect(true).toBe(true);
});

希望这有帮助。

根据您的问题,量角器正在执行expect语句和click()函数。量角器是异步且快速的,所以它执行它能执行的所有操作,然后等待承诺/回调返回。尝试先等待单击,然后尝试断言该类。这是你可以做到的-

element(by.css('#sign-in')).click().then(function(){
  expect(element(by.css('#sign-in')).getAttribute('class')).toMatch(/\bloading\b/);
});
另外,如果http请求阻止了您的执行,请尝试等待元素显示。如果显示元素,那么它与验证元素一样好

browser.wait(protractor.ExpectedConditions.visibilityOf($('.loading')), 10000)
.then(function(){
  expect(true).toBe(true);
});

希望这有帮助。

根据您的问题,量角器正在执行expect语句和click()函数。量角器是异步且快速的,所以它执行它能执行的所有操作,然后等待承诺/回调返回。尝试先等待单击,然后尝试断言该类。这是你可以做到的-

element(by.css('#sign-in')).click().then(function(){
  expect(element(by.css('#sign-in')).getAttribute('class')).toMatch(/\bloading\b/);
});
另外,如果http请求阻止了您的执行,请尝试等待元素显示。如果显示元素,那么它与验证元素一样好

browser.wait(protractor.ExpectedConditions.visibilityOf($('.loading')), 10000)
.then(function(){
  expect(true).toBe(true);
});

希望这有帮助。

根据您的问题,量角器正在执行expect语句和click()函数。量角器是异步且快速的,所以它执行它能执行的所有操作,然后等待承诺/回调返回。尝试先等待单击,然后尝试断言该类。这是你可以做到的-

element(by.css('#sign-in')).click().then(function(){
  expect(element(by.css('#sign-in')).getAttribute('class')).toMatch(/\bloading\b/);
});
另外,如果http请求阻止了您的执行,请尝试等待元素显示。如果显示元素,那么它与验证元素一样好

browser.wait(protractor.ExpectedConditions.visibilityOf($('.loading')), 10000)
.then(function(){
  expect(true).toBe(true);
});

希望这能有所帮助。

我想我找到了解决办法

element()函数等待angular进入,但browser.driver.findElement()没有。因此,通过将断言行更改为

expect(browser.driver.findElement(by.css('#sign-in')).getAttribute('class')).toMatch(/\bloading\b/);

现在测试通过了,我想我找到了解决办法

element()函数等待angular进入,但browser.driver.findElement()没有。因此,通过将断言行更改为

expect(browser.driver.findElement(by.css('#sign-in')).getAttribute('class')).toMatch(/\bloading\b/);

现在测试通过了,我想我找到了解决办法

element()函数等待angular进入,但browser.driver.findElement()没有。因此,通过将断言行更改为

expect(browser.driver.findElement(by.css('#sign-in')).getAttribute('class')).toMatch(/\bloading\b/);

现在测试通过了,我想我找到了解决办法

element()函数等待angular进入,但browser.driver.findElement()没有。因此,通过将断言行更改为

expect(browser.driver.findElement(by.css('#sign-in')).getAttribute('class')).toMatch(/\bloading\b/);

测试现在通过了

问题在于它似乎只有在http请求完成后才运行断言,无论是在我的代码版本还是在你的代码版本中。问题在于它似乎只有在http请求完成后才运行断言,在我的代码版本和你的代码版本中都存在。问题是,它似乎只有在http请求完成后才运行断言,无论是在我的代码版本还是在你的代码版本中。问题是它似乎只有在http请求完成后才运行断言,无论是在我的代码版本还是在你的代码版本中。酷。。很高兴知道这一点。如果它起作用,那么你可能应该把它标记为答案,这样它就可以帮助别人。酷。。很高兴知道这一点。如果它起作用,那么你可能应该把它标记为答案,这样它就可以帮助别人。酷。。很高兴知道这一点。如果它起作用,那么你可能应该把它标记为答案,这样它就可以帮助别人。酷。。很高兴知道这一点。如果它起作用,那么你可能应该把它标记为答案,这样它可以帮助别人。