如何获取量角器中所有元素的文本并将其与我期望的文本进行比较?

时间:2019-01-18 06:17:56

标签: typescript npm protractor node-modules cucumberjs

这是我的第一篇文章,正在寻求帮助,因为我是量角器的新手。

我想在div标签下获取所有Web元素的文本,并将其与预期文本进行比较。我找到了一种使用以下方法获取文本的方法:

 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是如下所示的网络元素:

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

expectedTextArray []向我抛出一个找不到它的错误。我现在该怎么办?请更新代码。


在我的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”,但它不能识别ExpectedTextArray。

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

1 个答案:

答案 0 :(得分:1)

        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); 
       });      
       })
       });

希望它对您有帮助