已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
QTP六脉神剑之调用Java程序版权声明:原创作品,转载请以链接方式注明出自/?35,否则将追究法律责任。本文出自songfun的51Testing软件测试博客:/?35不少网友对于QTP调用Java程序感到束手无策,实际上要调用Java程序是非常容易的。接下来songfun老师传授给大家武林绝技之六脉神剑。在演示这个例子前,请大家先造一个java程序(我以java计算器为例,源码见下),以方便观察调用结果。第一式:少商剑。特点:剑路雄劲,石破天惊。打开QTP,在QTP的Expert View中输入:InvokeApplication cmd /k cd c: & java Counter & exit运行QTP,看看,打开了吗?第二式:商阳剑。特点:巧妙灵活,难以捉摸。在C盘上新建一个bat文件,取名为runjava.bat,在文件里面输入一段文本:cmd /k cd c: & java Counter & exit,然后保存下来。打开QTP,在QTP的Expert View中输入:SystemUtil.Run C:runjava.bat运行QTP,看看,打开了吗?第三式:中冲剑。特点:大开大阖,气势雄迈。打开QTP,在QTP的Expert View中输入:Dim oWshSet Wsh = CreateObject(WScript.Shell)oWsh.Exec cmd /k cd c: & java Counter & exitSet Wsh = Nothing运行QTP,看看,打开了吗?第四式:关冲剑。特点:以拙滞古朴取胜。在C盘上新建一个qfl文件,取名为runjava.qfl,在文件里面输入一段文本:CallJava CounterSub CallJava(ByVal strJavaName)Dim oWshSet Wsh = CreateObject(WScript.Shell)oWsh.Run cmd /k cd c: & java & strJavaName & & exitSet Wsh = NothingEnd Sub打开QTP,在QTP的Expert View中输入:ExecuteFile C:runjava.qfl运行QTP,看看,打开了吗?第五式:少冲剑。特点:轻灵婀娜,迅雷不及掩耳。安装QTP的Java Add-in,之后在AutomationRecord and Run Settings中出现了Java标签页。根据下图的内容设置即可(runjava.bat文件内容参照六脉神剑第二式)。javarecord.PNG第六式:少泽剑。特点:忽来忽去,变化精微。采用直接调用jar包的形式。要生成jar包,首先要确保在C盘下已经放置了Counter.java源文件,然后通过命令行工具去编译它:cd javac Counter.javajar cvf Counter.jar *.class执行完命令看看在C盘是否已经生成了Counter.jar文件?接下来解压Counter.jar文件,在C:CounterMETA-INF目录下可以找到MANIFEST.MF这个文件,用Notepad打开,在第三行空行处加入入口类的代码(蓝色字体部分):Manifest-Version: 1.0Created-By: 1.6.0_07 (Sun Microsystems Inc.)Main-Class: Counter保存完以后,回到命令行窗口处,输入命令更新jar包:jar umf C:CounterMETA-INFMANIFEST.MF Counter.jar写完测试一下:java -jar Counter.jar如果计算器可以打开说明前期铺垫工作已经完成,那接下来的就是在QTP的Expert View中输入:SystemUtil.Run C:Counter.jar运行QTP,看看,打开了吗?本文出自songfun的51Testing软件测试博客:/?35当然实际上要调用Java程序的方法还有很多,这里就不一一介绍了。在下次课,songfun老师将会传授QTP独门秘笈之降龙十八掌给大家。谢谢!再见!本文出自songfun的51Testing软件测试博客:/?35附:Counter.java源码。import java.awt.*;import java.awt.event.*;import java.lang.*;import javax.swing.*;public class Counter extends Frame./声明三个面板的布局GridLayout gl1,gl2,gl3;Panel p0,p1,p2,p3;JTextField tf1;TextField tf2;Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;StringBuffer str;/显示屏所显示的字符串double x,y;/x和y都是运算数int z;/Z表示单击了那一个运算符.0表示+,1表示-,2表示*,3表示/static double m;/记忆的数字public Counter()gl1=new GridLayout(1,4,10,0);/实例化三个面板的布局gl2=new GridLayout(4,1,0,15);gl3=new GridLayout(4,5,10,15);tf1=new JTextField(27);/显示屏tf1.setHorizontalAlignment(JTextField.RIGHT);tf1.setEnabled(false);tf1.setText(0);tf2=new TextField(10);/显示记忆的索引值tf2.setEditable(false);/实例化所有按钮、设置其前景色并注册*b0=new Button(Backspace);b0.setForeground(Color.red);b0.addActionListener(new Bt();b1=new Button(CE);b1.setForeground(Color.red);b1.addActionListener(new Bt();b2=new Button(C);b2.setForeground(Color.red);b2.addActionListener(new Bt();b3=new Button(MC);b3.setForeground(Color.red);b3.addActionListener(new Bt();b4=new Button(MR);b4.setForeground(Color.red);b4.addActionListener(new Bt();b5=new Button(MS);b5.setForeground(Color.red);b5.addActionListener(new Bt();b6=new Button(M+);b6.setForeground(Color.red);b6.addActionListener(new Bt();b7=new Button(7);b7.setForeground(Color.blue);b7.addActionListener(new Bt();b8=new Button(8);b8.setForeground(Color.blue);b8.addActionListener(new Bt();b9=new Button(9);b9.setForeground(Color.blue);b9.addActionListener(new Bt();b10=new Button(/);b10.setForeground(Color.red);b10.addActionListener(new Bt();b11=new Button(sqrt);b11.setForeground(Color.blue);b11.addActionListener(new Bt();b12=new Button(4);b12.setForeground(Color.blue);b12.addActionListener(new Bt();b13=new Button(5);b13.setForeground(Color.blue);b13.addActionListener(new Bt();b14=new Button(6);b14.setForeground(Color.blue);b14.addActionListener(new Bt();b15=new Button(*);b15.setForeground(Color.red);b15.addActionListener(new Bt();b16=new Button(%);b16.setForeground(Color.blue);b16.addActionListener(new Bt();b17=new Button(1);b17.setForeground(Color.blue);b17.addActionListener(new Bt();b18=new Button(2);b18.setForeground(Color.blue);b18.addActionListener(new Bt();b19=new Button(3);b19.setForeground(Color.blue);b19.addActionListener(new Bt();b20=new Button(-);b20.setForeground(Color.red);b20.addActionListener(new Bt();b21=new Button(1/X);b21.setForeground(Color.blue);b21.addActionListener(new Bt();b22=new Button(0);b22.setForeground(Color.blue);b22.addActionListener(new Bt();b23=new Button(+/-);b23.setForeground(Color.blue);b23.addActionListener(new Bt();b24=new Button(.);b24.setForeground(Color.blue);b24.addActionListener(new Bt();b25=new Button(+);b25.setForeground(Color.red);b25.addActionListener(new Bt();b26=new Button(=);b26.setForeground(Color.red);b26.addActionListener(new Bt();/实例化四个面板p0=new Panel();p1=new Panel();p2=new Panel();p3=new Panel();/创建一个空字符串缓冲区str=new StringBuffer();/添加面板p0中的组件和设置其在框架中的位置和大小p0.add(tf1);p0.setBounds(10,25,300,40);/添加面板p1中的组件和设置其在框架中的位置和大小p1.setLayout(gl1);p1.add(tf2);p1.add(b0);p1.add(b1);p1.add(b2);p1.setBounds(10,65,300,25);/添加面板p2中的组件并设置其的框架中的位置和大小p2.setLayout(gl2);p2.add(b3);p2.add(b4);p2.add(b5);p2.add(b6);p2.setBounds(10,110,40,150);/添加面板p3中的组件并设置其在框架中的位置和大小p3.setLayout(gl3);/设置p3的布局p3.add(b7);p3.add(b8);p3.add(b9);p3.add(b10);p3.add(b11);p3.add(b12);p3.add(b13);p3.add(b14);p3.add(b15);p3.add(b16);p3.add(b17);p3.add(b18);p3.add(b19);p3.add(b20);p3.add(b21);p3.add(b22);p3.add(b23);p3.add(b24);p3.add(b25);p3.add(b26);p3.setBounds(60,110,250,150);/设置框架中的布局为空布局并添加4个面板setLayout(null);add(p0);add(p1);add(p2);add(p3);setResizable(false);/禁止调整框架的大小/匿名类关闭窗口addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e1)System.exit(0););setBackground(Color.lightGray);setBounds(100,100,320,280);setVisible(true);/构造*class Bt implements ActionListenerpublic void actionPerformed(ActionEvent e2)tryif(e2.getSource()=b1)/选择CE清零tf1.setText(0);/把显示屏清零str.setLength(0);/清空字符串缓冲区以准备接收新的输入运算数else if(e2.getSource()=b2)/选择C清零tf1.setText(0);/把显示屏清零str.setLength(0);else if(e2.getSource()=b23)/单击+/-选择输入的运算数是正数还是负数x=Double.parseDouble(tf1.getText().trim();tf1.setText(+(-x);else if(e2.getSource()=b25)/单击加号按钮获得x的值和z的值并清空y的值x=Double.parseDouble(tf1.getText().trim();str.setLength(0);/清空缓冲区以便接收新的另一个运算数y=0d;z=0;else if(e2.getSource()=b20)/单击减号按钮获得x的值和z的值并清空y的值x=Double.parseDouble(tf1.getText().trim();str.setLength(0);y=0d;z=1;else if(e2.getSource()=b15)/单击乘号按钮获得x的值和z的值并清空y的值x=Double.parseDouble(tf1.getText().trim();str.setLength(0);y=0d;z=2;else if(e2.getSource()=b10)/单击除号按钮获得x的值和z的值并空y的值x=Double.parseDouble(tf1.getText().trim();str.setLength(0);y=0d;z=3;else if(e2.getSource()=b26)/单击等号按钮输出计算结果str.setLength(0);switch(z)case 0 : tf1.setText(+(x+y);break;case 1 : tf1.setText(+(x-y);break;case 2 : tf1.setText(+(x*y);break;case 3 : tf1.setText(+(x/y);break;else if(e2.getSource()=b24)/单击.按钮输入小数if(tf1.getText().trim().indexOf(.)!=-1)/判断字符串中是否已经包含了小数点else/如果没数点有小if(tf1.getText().trim().equals(0)/如果初时显示为0str.setLength(0);tf1.setText(str.append(0+e2.getActionCommand().toString();else if(tf1.getText().trim().equals()/如果初时显示为空则不做任何操作elsetf1.setText(str.append(e2.getActionCommand().toString();y=0d;else if(e2.getSource()=b11)/求平方根x=Double.parseDouble(tf1.getText().trim();tf1.setText(数字格式异常);if(x0)tf1.setText(负数没有平方根);elsetf1.setText(+Math.sqrt(x);str.setLength(0);y=0d;else if(e2.getSource()=b16)/单击了%按钮x=Double.parseDouble(tf1.getText().trim();tf1.setText(+(0.01*x);str.setLength(0);y=0d;else if(e2.getSource()=b21)/单击了1/X按钮x=Double.parseDouble(tf1.getText().trim();if(x=0)tf1.setText(除数不能为零);elsetf1.setText(+(1/x);str.setLength(0);y=0d;else if(e2.getSource()=b3)/MC为清除内存m=0d;tf2.setText();str.setLength(0);else if(e2.getSource()=b4)/MR为重新调用存储的数据if(tf2.getText().trim()!=)/有记忆数字tf1.setText(+m);else if(e2.getSource()=b5)/MS为存储显示的数据m=Double.parseDouble(tf1.getText().trim();tf2.setText(M);tf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司三分协议合同模板
- 厂区物业管理合同范本
- 光伏劳务安装合同范本
- 协议函件合同格式模板
- 南宁小香猪领养协议书
- 人力资源管理行业市场变化及未来发展趋势报告
- 农民工无效合同协议书
- 印刷机设备转让协议书
- 口才机构劳动合同范本
- 合伙公司没协议没合同
- 2024年青岛市市属事业单位遴选考试真题
- 自体输血管理制度与技术规范
- 《电商平台提价运营策略对比分析-以拼多多与淘宝特价版为例》12000字
- 2024秋七年级英语上册 Unit 3 Is this your pencil Period 1 Section A (1a-1c)教学实录(新版)人教新目标版
- 《神经外科手术的麻醉》课件
- 2025年上半年泸州市纳溪区总工会招考社会化专职工会工作者易考易错模拟试题(共500题)试卷后附参考答案
- 网格员安全知识培训课件
- GB/T 15972.40-2024光纤试验方法规范第40部分:传输特性的测量方法和试验程序衰减
- 法院冻结所有账户执行异议申请书
- 【MOOC】地理空间数据库-战略支援部队信息工程大学 中国大学慕课MOOC答案
- JT∕T 795-2023 事故汽车修复技术规范
评论
0/150
提交评论