簡體   English   中英

如何在Javascript中使用Protractor和Page Object Model正確使用getText()

[英]How to accurately use getText() with Protractor and Page Object Model in Javascript

我很難從頁面對象返回值。 使用getText()返回整個對象,而不僅僅是文本。 如果我理解正確,這是由於getText()是一個承諾。

如果需要的話,我有我的代碼,但是我要完成的工作與這個流行的在線示例相似。 為了簡單起見,我將使用它。

var AngularHomepage = function() {
  var nameInput = element(by.model('yourName'));
  var greeting = element(by.binding('yourName'));

  this.get = function() {
    browser.get('http://www.angularjs.org');
  };

  this.setName = function(name) {
    nameInput.sendKeys(name);
  };

  this.getGreetingText = function() {
    return greeting.getText();
  };
};
module.exports = new AngularHomepage();

這是規格文件。 我已經將其修改為console.log返回。

var angularHomepage = require('../pages/AngularPage');
describe('angularjs homepage', function() {
  it('should greet the named user', function() {
    angularHomepage.get();

    angularHomepage.setName('Julie');
    var log = angularHomepage.getGreetingText();
    expect(angularHomepage.getGreetingText()).toEqual('Hello Julie!');
    console.log(log);
  });
});

這是我很困惑的地方。 期望和測試通過。 但是控制台記錄了整個對象,太長了,無法在此處添加。 絕對不只是“ Hello Julie!”。 我希望澄清兩件事。

一種。 以上是使用getText()進行“期望”語句的准確方法嗎? 我不知道測試如何通過,而console.log是整個對象,而不是必需的文本。 這僅僅是因為“期望”履行了返回的承諾嗎?

b。 下面,我修改了Page Object中的方法,實現了控制台輸出真正 “ Hello Julie!”的承諾。 問題是,我必須在這里使用“期望”,而不是在我的規范中使用(或者至少我不知道如何僅返回文本)。 這樣在Page Object方法本身中包含Expect語句是否有問題? 還是僅返回元素文本的簡單方法?

  this.getGreetingText = function() {
    greeting.getText().then(function (text) {    
      console.log(text);
      expect(text.toEqual('Hello Julie!'));
  });
    // expect is done, no return needed.
    //return greeting.getText();
  };

從測試人員的角度來看,比較文本似乎更准確,而不是第一個示例所做的事情。 但是,如果第一個示例是可以接受的,並且不建議在頁面對象中包含“期望”,那么我想這就是我要做的!

我相信您需要做的就是使函數異步,然后在變量賦值之前等待。

var log = await angularHomepage.getGreetingText();

這會將文本從promise中拉出,並將其存儲到變量中。

使用then語句可用於從promise中提取文本。 僅當您要記錄文本時才需.getText() ,因為.getText()語句可以處理.getText()

angularHomepage.getGreetingText().then(function(text){
    console.log(text);
    expect(text).toBe('Hello Julie');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM