我想实现以下目标:
当前我正在使用茉莉花数据提供程序,但动态地我却不能
每次运行第一个js文件后都执行此操作,然后更新茉莉花数据
提供程序,然后运行下一个js文件,以便将计划编号作为
在搜索文本框中输入。
这是一个简单的逻辑,但是它将适用于我猜想的所有应用程序。
createplan.js 文件:
var plannumberis, using = require('jasmine-data-provider');
describe("Plan Creation", () => {
using(leadEnters.leadinputs, (data, description) => {
it("Plan is generated and stored globally", () => {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000;
browser.wait(EC.urlContains('WorkFlow/#/app/impPlan'));
browser.wait(EC.presenceOf(element(by.xpath("//div[@class='sweModal-body']"))), 160 * 10000);
var dialog = element(by.className("sweModal-body"));
expect(dialog.isDisplayed).toBeTruthy();
var dialog-text = element(by.className("sweModal-content"));
dialogtext.getText().then(function (text) {
console.log(text);
plannumberis=text.slice(20, 28);// --here i store the plan number in var
// plannumberis **
console.log("implementation plan id is :" + plan);
browser.wait(EC.presenceOf(element(by.css("button[class='btn btn-primary okBtn']"))));
element(by.css("button[class='btn btn-primary okBtn']")).click();
})
})
})
})
sendforreview.js
describe("STAGE 2:Developer Activities : Segment Checkout", () => {
using(DeveloperInputs.Devinputs, (data, description) => {
it("Developer checksout the required segments", () => {
searchPlanId.clickSearch();
searchPlanId.selectSearchTypeWithIndex(2);
searchPlanId.enterImplementationNo(data.PlanNumber);// --here i want to
// call theplannumber generated in the first js file.How to do this
browser.wait(EC.presenceOf(element(by.css("i[class='fa fa-search']"))), 10000);
searchPlanId.clickSearchButton();
developerActions.editFirstImplementation(plannumberis);
// Here I want to call the id generated in createplan.js
// So in jasmine data provider I'm manually updating
// this after I run the 1stjs file then pass it in second jsfile
})
})
})
答案 0 :(得分:0)
您应该能够通过使用NodeJS的global variables关键字来实现此目的,该关键字使变量可被项目中的所有文件访问。
file1.js
//delcare var
global.newGlobalVar = 'value we want in another file'
file2.js
//use the var
console.log(newGlobalVar)
尽管看起来您在两个测试文件中都使用了循环,但我看不到这种方法对您有用
答案 1 :(得分:0)
您遇到的问题是var plannumberis
在模块(文件)范围内,而不在 global 范围内。您的变量只能在该规范文件中访问。
来自the docs的更多内容:
在浏览器中,顶级范围是全局范围。这意味着在浏览器var中,将定义新的全局变量。在Node.js中,这是不同的。顶级范围不是全局范围; var Node.js模块内部的某些内容对于该模块而言是本地的。
在全局范围内放置某些内容的方法是将其放置在global
对象上。
global.plannumberis=text.slice(20, 28);
之后,您可以使用plannumberis
从任何模块中引用它。
但是,我不能鼓励您在这里做出设计决定。不建议在这种规格之间保持高度依赖。按照您设计的方式,如果有人尝试独自运行sendforreview.js
,测试将以令人困惑且看似随意的方式失败。您应该编写规范,以便它们彼此独立并且可以按任何顺序运行。
在这种情况下,您可以通过将两个文件合并为一个规范来实现。