量角器测试不一致传递/失败

时间:2016-05-26 18:26:47

标签: javascript angularjs testing automated-tests protractor

我对此测试的问题是,有时它会通过,有时会失败,当它执行后者时,会出现“失败:找不到使用定位器的元素:By(css selector,.add.create_ServiceOrders)”消息在控制台中。 Idk如何解决它:(

 describe('angularjs homepage', function() {

   it('should greet the named user', function() {     
  //browser.ignoreSynchronization = true
  browser.get('https://int.m-tech.com/hotsosmobile/app/Index?/login#/login');
  browser.waitForAngular();

  var input = element(by.model('loginInfo.login'));
  input.sendKeys('xxx');
  expect(input.getAttribute('value')).toBe('xxx');

  var input = element(by.model('loginInfo.password'));
  input.sendKeys('yyy');
  expect(input.getAttribute('value')).toBe('yyy');

  browser.waitForAngular(); 

  browser.driver.actions().sendKeys(protractor.Key.ENTER).perform();

  browser.waitForAngular(); 

  var AddButton = element(by.css(".add.create_ServiceOrders" ));
  browser.actions().mouseDown(AddButton).mouseUp().perform();   
  browser.actions().mouseMove(AddButton).click().perform();

  browser.waitForAngular(); 

  var AddButton = element(by.css(".icon-standard-issue-floors" ));
  browser.actions().mouseDown(AddButton).mouseUp().perform();  
  browser.actions().mouseMove(AddButton).click().perform();

  browser.waitForAngular(); 
  .....
 });
});

2 个答案:

答案 0 :(得分:0)

根据我的经验,我通常会在另一个it函数中将其分开。

var AddButton = element(by.css(".add.create_ServiceOrders" ));

it ( 'should pass', function () {
browser.actions().mouseDown(AddButton).mouseUp().perform();   
});

it ( 'should pass', function () {
browser.actions().mouseMove(AddButton).click().perform();
}); 

答案 1 :(得分:0)

在操作之前,您需要等待元素准备就绪。试试这个:

var AddButton = $(".add.create_ServiceOrders");
browser.wait(protractor.ExpectedConditions.visibilityOf(AddButton), 5000, 'Button should be visible');
browser.actions().mouseDown(AddButton).mouseUp().perform();
browser.actions().mouseMove(AddButton).click().perform();
...