browser.sleep () против browser.wait () транспортир-жасмин-JavaScript - PullRequest
0 голосов
/ 04 декабря 2018

Я использую Protractor-Jasmine-JavaScript.

В приведенном ниже коде оператор wait.toBe выполняется, как и ожидалось, после нажатия на обе кнопки.

element(by.xpath(button1_xpath)).click(); //click on button1
var elem=element(by.xpath(button2_xpath));
browser.sleep(3000)
elem.click(); //click on button2

element(by.xpath(receivedMsg_xpath)).getText().then(function(msg){        
  expect(msg).toBe(Expected_Msg);
});

В приведенном ниже коде ожидается.toBeОператор выполняется перед нажатием второй кнопки и, следовательно, не может.

  element(by.xpath(button1_xpath)).click();
  var elem=element(by.xpath(button2_xpath));
  var isClickable = exCon.elementToBeClickable(elem);
  browser.wait(isClickable,3000);
  elem.click();

  element(by.xpath(receivedMsg_xpath)).getText().then(function(msg){        
      expect(msg).toBe(Expected_Msg);
  });

Я не хочу использовать browser.sleep ().Есть ли способ, которым bowser.wait () может работать?Или любое другое альтернативное решение?

1 Ответ

0 голосов
/ 04 декабря 2018

Попробуйте это:

var elem;
element(by.xpath(button1_xpath)).click();
browser.wait(function(){
  elem = exCon.elementToBeClickable(element(by.xpath(button2_xpath)));
},3000).then(function(){
  elem.click();
});

element(by.xpath(receivedMsg_xpath)).getText().then(function(msg){        
  expect(msg).toBe(Expected_Msg);
});

Обратите внимание, что elementToBeClickable() возвращает элемент, если он активен.Итак, вы хотите подождать, пока он вернет элемент, прежде чем щелкнуть по нему.

Этот вопрос похож на тот, на который здесь дан ответ: https://stackoverflow.com/a/38674105/10397500

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...