2017-02-22 6 views
1

Im работает с протактором 5.1.1 и chromedriver_2.27. При нажатии кнопки расписания я хочу подождать, пока не появится сообщение «Планирование завершено». Я пробовал следующий код (и код, который тоже прокомментирован) без успеха. Каждый раз, когда транспортир будет продолжаться независимо. Есть идеи?Транспортир: Ищет текст, который нужно показывать, когда я нажимаю на объект

enter image description hereenter image description here

that.serviceFilter.sendKeys(serviceName).then(function() { 
     utilsObj.doActionWithWait(that.serviceRowInServiceList, function() { 
      utilsObj.doActionWithWait(that.pickFilteredService, function() { 
       that.pickFilteredService.click().then(function() { 
        that.selectAllBtn.click().then(function() { 
         that.actionBtn.click().then(function() { 
          that.scheduleBtn.click() 



          // //EC = protractor.ExpectedConditions; 
          // var aaa = element(by.xpath("//*[@id='SchedulingInProgress']")); 
          // browser.wait(function() { 
          //  return EC.visibilityOf(aaa).call().then(function (present) { 
          //   console.log('\n' + 'looking for element....') 
          //   if (present) { 
          //    console.log('\n' + 'element not found!') 
          //    return true; 
          //   } 
          //   else { 
          //    console.log('\n' + 'element found!!') 
          //    return false; 
          //   } 
          //  }); 
          // }, 50000); 

         }); 
         browser.wait(function() { 
          return browser.driver.isElementPresent(by.xpath("//*[@id='SchedulingInProgress']")) 

         }) 


        }); 

       }); 

      }); 

     }); 

    }); 

ответ

1

В сообщении об ошибке означает, что вы используете - isElementPresent() неправильно. Его функция на объекте ElementFinder, а не на драйвере.

некорректное использование - browser.driver.isElementPresent()

Правильное использование - browser.driver.FindElement().isElementPresent()

Подробнее here. Если ваша цель здесь - дождаться появления определенного элемента. Вы на правильном пути - используйте Expected Conditions, и они вписываются в browser.wait очень красиво. Вы можете сделать что-то вроде этого - browser.wait(EC.visibilityOf(element), 5000); //wait for an element to become интерактивного

Посмотрите here на его использовании

0

Наконец я получил решение!

var EC = protractor.ExpectedConditions; var elm = element(by.css("#SchedulingInProgress > div:nth-child(2) > div")); browser.wait(EC.visibilityOf(elm), 50000); expect(elm.getText()).toEqual('Scheduled 1 out of 1');

Смежные вопросы