如何在同一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
相关产品推荐
相关产品推荐

