用java程序登录应用程序,自动化测试

来源:互联网 发布:组策略隐藏网络配置 编辑:程序博客网 时间:2024/06/02 06:31

用java程序登录应用程序,自动化测试

下面的获取屏幕位置代码可以直接使用,打开运用程序进行测试需要根据你的具体情况使用代码,例如”D:\lanqiao\lanqiao2006.exe”是运用程序的位置。后续获取位置,可以使用最后一段代码在页面获取后使用,web项目自动测试工具还可以使用selenium

首先,打开运用程序

【打开运用程序示例】

package cn.com.robotest;import javax.imageio.ImageIO;import java.awt.*;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;public class RobotTest{    public static void main(String[] args) throws AWTException,         InterruptedException, IOException    {        Runtime rt = Runtime.getRuntime();        try {            rt.exec("D:\\lanqiao\\lanqiao2006.exe");        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } //    }}

打开运用程序后进行登录操作,并进行后续操作

【公共方法示例】

package cn.com;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.image.BufferedImage;import javax.swing.Icon;import javax.swing.ImageIcon;public class CommonAuto {    /**     * 鼠标单击(左击),要双击就连续调用     *      * @param r     * @param x     *            x坐标位置     * @param y     *            y坐标位置     * @param delay     *            该操作后的延迟时间     */    public static void clickLMouse(Robot r, int x, int y, int delay) {        r.mouseMove(x, y);        r.mousePress(InputEvent.BUTTON1_MASK);        r.delay(10);        r.mouseRelease(InputEvent.BUTTON1_MASK);        r.delay(delay);    }    /**     * 鼠标右击,要双击就连续调用     *      * @param r     * @param x     *            x坐标位置     * @param y     *            y坐标位置     * @param delay     *            该操作后的延迟时间     */    public static void clickRMouse(Robot r, int x, int y, int delay) {        r.mouseMove(x, y);        r.mousePress(InputEvent.BUTTON3_MASK);        r.delay(10);        r.mouseRelease(InputEvent.BUTTON3_MASK);        r.delay(delay);    }    /**     * 键盘输入(一次只能输入一个字符)     *      * @param r     * @param ks     *            键盘输入的字符数组     * @param delay     *            输入一个键后的延迟时间     */    public static void pressKeys(Robot r, int[] ks, int delay) {        for (int i = 0; i < ks.length; i++) {            r.keyPress(ks[i]);            r.delay(10);            r.keyRelease(ks[i]);            r.delay(delay);        }    }    /**     * 复制     *      * @param r     * @throws InterruptedException     */    void doCopy(Robot r) throws InterruptedException {        Thread.sleep(3000);        r.setAutoDelay(200);        r.keyPress(KeyEvent.VK_CONTROL);        r.keyPress(KeyEvent.VK_C);        r.keyRelease(KeyEvent.VK_CONTROL);        r.keyRelease(KeyEvent.VK_C);    }    /**     * 粘贴     *      * @param r     * @throws InterruptedException     */    void doParse(Robot r) throws InterruptedException {        r.setAutoDelay(500);        Thread.sleep(2000);        r.mouseMove(300, 300);        r.mousePress(InputEvent.BUTTON1_MASK);        r.mouseRelease(InputEvent.BUTTON1_MASK);        r.keyPress(KeyEvent.VK_CONTROL);        r.keyPress(KeyEvent.VK_V);        r.keyRelease(KeyEvent.VK_CONTROL);        r.keyRelease(KeyEvent.VK_V);    }    /**     * 捕捉全屏慕     *      * @param r     * @return     */    public Icon captureFullScreen(Robot r) {        BufferedImage fullScreenImage = r.createScreenCapture(new Rectangle(                Toolkit.getDefaultToolkit().getScreenSize()));        ImageIcon icon = new ImageIcon(fullScreenImage);        return icon;    }    /**     * 捕捉屏幕的一个矫形区域     *      * @param r     * @param x     *            x坐标位置     * @param y     *            y坐标位置     * @param width     *            矩形的宽     * @param height     *            矩形的高     * @return     */    public Icon capturePartScreen(Robot r, int x, int y, int width, int height) {        r.mouseMove(x, y);        BufferedImage fullScreenImage = r.createScreenCapture(new Rectangle(                width, height));        ImageIcon icon = new ImageIcon(fullScreenImage);        return icon;    }}

【登录并进行后续操作示例】

package cn.com;import java.awt.AWTException;import java.awt.Dimension;import java.awt.Robot;import java.awt.Toolkit;import java.awt.event.KeyEvent;import java.io.IOException;public class AutoTest {    public static void main(String[] args) throws AWTException,         InterruptedException, IOException    {        Robot robot = new Robot();        //设置Robot产生一个动作后的休眠时间,否则执行过快       //获取屏幕分辨率        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();        double height=900;        System.out.println(d);        Runtime rt = Runtime.getRuntime();        try {            rt.exec("D:\\lanqiao\\lanqiao\\lanqiao2006.exe");        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } //        robot.setAutoDelay(5000);        robot.mouseMove(500, 500);        robot.setAutoDelay(500);        int[] login = { KeyEvent.VK_SHIFT,KeyEvent.VK_S,KeyEvent.VK_Y,KeyEvent.VK_0,KeyEvent.VK_5,KeyEvent.VK_0,KeyEvent.VK_TAB,                KeyEvent.VK_1,KeyEvent.VK_2,KeyEvent.VK_3,KeyEvent.VK_4,KeyEvent.VK_5,KeyEvent.VK_6,                KeyEvent.VK_ENTER};//登录        CommonAuto.pressKeys(robot, login, 50);        CommonAuto.clickLMouse(robot,300, (int) ((double)847/900*height), 3000);//营运管理        CommonAuto.clickLMouse(robot, 457, (int) ((double)208/900*height), 3000);//受理开单        CommonAuto.clickLMouse(robot, 299, (int) ((double)152/900*height), 3000);//时间        int[] time = {KeyEvent.VK_LEFT,KeyEvent.VK_LEFT,KeyEvent.VK_LEFT,KeyEvent.VK_LEFT,KeyEvent.VK_LEFT,                KeyEvent.VK_2,KeyEvent.VK_0,KeyEvent.VK_1,KeyEvent.VK_6,KeyEvent.VK_RIGHT,KeyEvent.VK_1,KeyEvent.VK_RIGHT,KeyEvent.VK_1};//时间        CommonAuto.pressKeys(robot, time, 50);        CommonAuto.clickLMouse(robot, 882, (int) ((double)152/900*height), 60000);//提取        CommonAuto.clickLMouse(robot, 527, (int) ((double)838/900*height), 3000);//导出        int[] name = {KeyEvent.VK_2,KeyEvent.VK_0,KeyEvent.VK_1,KeyEvent.VK_6};//时间        CommonAuto.pressKeys(robot, name, 50);        CommonAuto.clickLMouse(robot, 629, (int) ((double)480/900*height), 3000);//保存    }}

当需要获取屏幕位置时,可以使用如下代码,可直接使用

【代码示例】

package cn.com.robotest;import java.awt.FlowLayout;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.JFrame;import javax.swing.JLabel;@SuppressWarnings("serial")public class PositionOfMouse extends JFrame{    private JLabel label;    public PositionOfMouse(){        super("测试程序");//建立新窗体        this.setSize(400,300);//设置窗体的宽和高        this.setVisible(true);//设置窗体可见        this.setLayout(new FlowLayout(FlowLayout.CENTER));//框架流布局且居中对齐        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置点击关闭按钮时的默认操作        final JLabel label = new JLabel("此处显示鼠标右键点击的坐标");        this.add(label); // 将标签放入窗体       // label.setText("3");        this.addMouseListener(new MouseAdapter(){  //匿名内部类,鼠标事件            public void mouseClicked(MouseEvent e){   //鼠标完成点击事件                if(e.getButton() == MouseEvent.BUTTON3){ //e.getButton就会返回点鼠标的那个键,左键还是右健,3代表右键                    int x = e.getX();  //得到鼠标x坐标                    int y = e.getY();  //得到鼠标y坐标                    String banner = "鼠标当前点击位置的坐标是" + x + "," + y;                    System.out.println("鼠标当前点击位置的坐标是" + x + "," + y);                    label.setText(banner);  //修改标签内容                }            }        });    }    public static void main(String[] args) {        // TODO 自动生成的方法存根        new PositionOfMouse();    }}
原创粉丝点击