You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一JavaScript文件内调用Protractor自动化脚本函数

在Protractor Page Object中调用同一文件内的函数

嘿,这事儿其实超简单!在你定义的PlatformviewCnOPage这个Page Object里,直接用this关键字就能调用同一个对象里的searchCapabilityOfferingsName函数啦——因为this指向当前的Page Object实例。

我给你补全并优化一下代码示例,你一看就懂:

var PlatformviewCnOPage = function() {
  // 你已经定义好的搜索方法
  this.searchCapabilityOfferingsName = function(){
    coreutil.clickElement(objectrepo.platformView_Searchbox_EnterBtn,'xpath');
    browser.sleep(2000);
    // 补全你获取搜索结果的逻辑
    var searchResult = coreutil.getTextofElement(objectrepo.platformView_SearchResult);
    return searchResult; // 建议返回结果,方便调用方后续处理
  };

  // 另一个需要调用搜索方法的函数
  this.verifySearchResult = function() {
    // 直接用this调用searchCapabilityOfferingsName,还能接收返回值
    var resultText = this.searchCapabilityOfferingsName();
    
    // 这里可以加断言或者其他业务逻辑,比如验证结果是否符合预期
    expect(resultText).toContain("预期的搜索关键词");
    console.log("获取到的搜索结果:", resultText);
  };
};

// 别忘了导出这个Page Object,这样测试用例才能引用它
module.exports = PlatformviewCnOPage;

几个小提醒:

  • 如果你的函数是在回调函数里调用(比如browser.wait或者element.all().each()这类异步操作里),要注意this的上下文可能会变,这时候可以提前把this存成一个变量:
    this.someAsyncFunction = function() {
      var self = this; // 保存当前实例的引用
      browser.wait(function() {
        return self.searchCapabilityOfferingsName().then(function(result) {
          return result !== "";
        });
      }, 5000);
    };
    
  • 在测试用例里调用这个Page Object的方式大概是这样的:
    var PlatformviewCnOPage = require('./path/to/PlatformviewCnOPage');
    
    describe('平台视图测试', function() {
      var platformPage;
    
      beforeEach(function() {
        platformPage = new PlatformviewCnOPage();
        // 这里可以加页面导航逻辑,比如browser.get("/platform-view");
      });
    
      it('验证搜索功能', function() {
        platformPage.verifySearchResult(); // 调用包含搜索逻辑的函数
      });
    });
    

内容的提问来源于stack exchange,提问作者sudhir swain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:18:23