Как получить текст всех элементов в транспортире и сравнить его с моим ожидаемым текстом? - PullRequest
0 голосов
/ 18 января 2019

Это мой первый пост, и я обращаюсь за помощью, поскольку я новичок в транспортире.

Я хочу получить текст всех веб-элементов в теге div и сравнить текст с моим ожидаемым текстом. Я нашел способ получить текст, используя ниже:

 element.all(By.xpath("//div[@class='grid-x grid-row 
   gridBody']/div")).each(function(element, index){
  element.getText().then(function(text) {
  console.log(''+text+'');
  })
  })

но я хочу знать, как сравнить этот текст с моим ожидаемым. Вкратце, я хочу знать, как можно сделать утверждение в приведенном выше сценарии.

Примечание: Пожалуйста, не говорите мне, что этот вопрос уже опубликован, потому что в предыдущих вопросах я мог найти решение, чтобы получить текст всех текстов, но не мог сравнить его с моим ожидаемым текстом.

Пожалуйста, дайте мне знать, если вам нужна какая-либо другая информация.

Я пытался использовать приведенное ниже, но я не думаю, что это хорошая практика:

if(index===0){
expect(text).equals("Campaign Title");
console.log("Step passed");
}  

Спасибо за помощь. Но на самом деле это не помогло мне. Пожалуйста, найдите ниже обновленный код:

       Then(/^User clicks and gets all the text for header details$/, async() => {
    await search.headerActiveCampaign.each(function(element, index){
        element.getText().then(function(text) {
            console.log(''+text+''); 
         expectedTextArray[]=['Campaign Title','Order Number','Air 
        Dates','Amounts','Status'] 
        expect(search.headerActiveCampaign.getText()).toBe(expectedArray); 
       });      
       })
       });

Здесь, в этом поиске «search.headerActiveCampaign» находится объект страницы, а headerActiveCampaign - это webelement, как показано ниже:

     public headerActiveCampaign: ElementArrayFinder;
    this.headerActiveCampaign=element.all(By.xpath("//div[@class='grid-x 
     grid- row gridHead']"));

Ожидается, что TextArray [] выдаст мне ошибку, из-за которой невозможно найти его. Что мне теперь делать? Пожалуйста, обновите код.


В моем файле pages.ts я написал в следующем формате:

     import { $, ElementFinder , element,By, by, ElementArrayFinder} from "protractor";
     export class SearchPageObject {
     public headerActiveCampaign: ElementArrayFinder;

     constructor() {
     this.headerActiveCampaign=element.all(By.xpath("//div[@class='grid-x grid-row           gridHead']"));
      }
      }

Итак, если я использую "const", то он не работает, а в приведенном ниже объявлении он не идентифицирует ожидаемый текстовый массив, хотя я объявляю его как "const"

      expect(search.headerActiveCampaign.getText()).toBe(expectedTextArray);

1 Ответ

0 голосов
/ 18 января 2019
        const headerActiveCampaign = element.all(By.xpath("//div[@class='grid-x grid-row gridBody']/div");// paste this IN YOUR PAGE object FILE.

       const expectedTextArray[]=['',''] //Add the text that you expect as array

        //Now to compare the actual and expect use the below code.
Then(/^User clicks and gets all the text for header details$/, async() => {

        expect(search.headerActiveCampaign.getText()).toBe(expectedTextArray); 
       });      
       })
       });

Надеюсь, это поможет вам

...