LoginSAP
场景:
从EXCEL读取了账号密码,客户端等等信息,然后登陆到对应的SAP GUI
第一步:添加应用程序
一共需要识别三个页面
(上图可以看到我的saplogon是用的列表视图,而不是工作区视图,原因是因为:只有列表视图才能识别到可以点击的元素,其他的识别不出来,可以自己试试。我写的另一篇博客的登陆方式更简单,完美去除了这种限制,可以看看。更简单方式)
除此以外,还要双击页面,然后添加页面上自己稍后会用到的元素。比如:
(要登陆到哪一个也是从EXCEL里面读取出来的,所以我需要识别这些,以便于后面登陆到对应的服务器)
第二步:创建工作流
在如下工作流里,首先读取EXCEL文件里面的东西,然后启动SAPLogon,然后分别进入上一步识别到的三个页面。
双击页面,编辑其具体活动。
双击第一个页面
(我个人都喜欢使用custom控件,然后自己写代码,不喜欢拖其他控件,然后给控件属性赋值的方式。这完全看个人喜好)
在第一个页面里面放一个custom控件,然后给它改个名字,改成click,表示在第一个页面即SAPLogon页面上,需要点击哪个地方。custom里面具体的代码在第三步写。
双击第二个页面
在第二个页面里面放一个custom控件,然后给它改个名字,改成set&Enter,表示在第二个页面即Login页面上,需要设置上值,然后点击Enter键。custom里面具体的代码在第三步写。
第二个页面的流程结束后,我添加了一个Wait控件,等待一秒。如下:
最后,点击构建按钮
第三步:编写脚本代码
因为我们用到了EXCEL,所以需要添加EXCEL的脚本库
右键,然后包含,然后添加EXCEL集成
点击根据自己的工作流构建出来的脚本,然后开始写代码。
找到代码里面对应的步骤,和自己要写代码的地方。
Step: ReadExcelViaCode_Login
ReadExcel
//ReadExcel
ctx.options.excel.visible = false;
ctx.excel.initialize();
ctx.excel.file.open("C:\\Users\\wenj\\Desktop\\LoginSAP.xlsx");
rootData.LoginData.Data = ctx.excel.sheet.getFullRangeValues('A',1,'E',1,undefined);
ctx.log(JSON.stringify(rootData.LoginData.Data));
ctx.excel.file.close();
ctx.excel.end();
这里是从A列读到E列,然后从1行到1行。
这里从EXCEL读取出来的数据存放在LoginData.Data里面的。
LoginData.Data是怎么来的?如下:
返回到工作流步骤,然后创建上下文。
最右边打勾表示这个是一个数组对象。
Step: pLogon_management
在这一步,是根据从EXCEL里面读取出来的数据,来判断登录到哪个SAP服务器
// Describe functionality to be implemented in JavaScript later in the project.
//Click which Client
var clickWhere = rootData.LoginData.Data[0][0];
ctx.log(clickWhere);
SAPLogon760.pLogon[clickWhere].clickDouble();
Step: pLogin_management
这一步是输入Client、账号、密码、登陆语言,然后点击键盘Enter键,登陆到SAP系统里。
// Describe functionality to be implemented in JavaScript later in the project.
SAPLogon760.pLogin.ed集团.set(rootData.LoginData.Data[0][1]);
SAPLogon760.pLogin.ed用户.set(rootData.LoginData.Data[0][2]);
SAPLogon760.pLogin.o密码.set(rootData.LoginData.Data[0][3]);
SAPLogon760.pLogin.ed登录语言.set(rootData.LoginData.Data[0][4]);
// Sends a key sequence to a page.
SAPLogon760.pLogin.keyStroke(e.SAPScripting.key._Enter_);
Step: pSAP_Menu_management
这一步是进入SAP系统后,在输入事务码的地方,输入EXCEL里面自己的事务码,然后点击Enter。(这里的代码有问题,并没有生效,我懒得改)
// Describe functionality to be implemented in JavaScript later in the project.
SAPLogon760.pSAP_Menu.oGuiOkCodeField.set(rootData.LoginData.Data[0][5]);
ctx.log(rootData.LoginData.Data[0][5]);
// Sends a key sequence to a page.
SAPLogon760.pSAP_Menu.keyStroke(e.SAPScripting.key._Enter_);
另一种点击Enter键的方式,貌似不生效。
SAPLogon760.pSAP.keyStroke(e.key.Enter);
至此,整个流程已经完毕。然后点击调试,就可以登陆了。
最后,放一下EXCEL里面的数据长什么样子: