前言:有很多公司做一些客户端的应用,每次发版都要耗费人力去手动回归比较费时,那么我们就想着去怎么去驱动人为的操作变为机器的操作过程,当然想着进行UI自动

那么我们就要考虑怎么去实现exe应用程序的自动化,此刻引来了几个问题值得我们去思考

1:exe的应用基于什么框架实现的其原理是什么?

2:怎么去自动启动壳

3:怎么去远程调式端口对壳子嵌入的网页进行做一些控制操作

一:应用程序的实现原理

1:exe的应用程序eg: electron 都是基于CEF开源的chromenium框架,selenium cef/electron(打包桌面程序)/qtwebbengine(渲染页面)

2:ChromeDriver和Selenium是用于自动测试基于Chromium的应用程序的工具,可以使用多种语言编写:Java,Python等

3:ChromeDriver使用DevTools远程调试协议(通过--remote-debugging-port=XXXX传递给应用程序的命令行标志进行配置)与基于Chromium的应用程序进行通信进行一些页面元素的控制。

二:实例如下:

1:安装JDK,然后将安装的bin目录添加到PATH的环境变量中

2:创建一个自动化文件目录,用于存放启动的应用

3:下载符合版本的驱动 chromedriver (http://chromedriver.storage.googleapis.com/index.html)

4:创建一个maven项目 引入依赖的jar 第三方库

5:创建一个DriverInstant.java  (启动应用程序,此类是一个封装好的)

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class DriverInstant {
private static WebDriver sInstant;//单例

public static WebDriver getInstant(){
if (sInstant==null) {
//设置webdriver.chrome.driver属性
System.setProperty("webdriver.chrome.driver", "D:/auto/chromedriver.exe");

//声明chromeoptions,主要给chrome设置参数
ChromeOptions options = new ChromeOptions();
// 添加用户配置文件路径
options.setBinary("XXXXXXXXX.exe");
options.addArguments("remote-debugging-port=远程调试端口号");

//新建一个WebDriver的对象,但是New的是chrome的驱动 实例化chrome对象
sInstant = new ChromeDriver(options);
//WebDriver driver=new ChromeDriver();
sInstant.get("嵌入的页面链接");
System.out.println(sInstant.toString());
}

return sInstant;
}

}

《exe应用程序UI自动化》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. linux下安装redis-6.0.6、配置redis远程连接

    官网下载安装包redis-6.0.6.tar.gz https://redis.io/ 上传到服务器之后使用tar -zxvf进行解压,解压后如下: 进入解压的文件之后我们可以看到他的配置文件(配置文 ...

  2. Qt MDI及其使用方法(详解版)

    统的应用程序设计中有多文档界面(Multi-document Interface,MDI)应用程序,Qt 为设计 MDI 应用程序提供了支持. 本节的实例 samp6_4 是一个 MDI 应用程序,程 ...

  3. git push&pull命令详解

    git pull的作用是从一个仓库或者本地的分支拉取并且整合代码. git pull [<options>] [<repository> [<refspec>-​] ...

  4. CentOS8安装Mysql5.7

    检查是否安装mysql [root@iZ2ze8crquorxf6c7l0eluZ ~]# rpm -qa |grep mysql [root@iZ2ze8crquorxf6c7l0eluZ ~]# ...

  5. Linux centos 安装 mysql 5.7

    一.mysql下载 1.方式一(简单粗暴) 直接在linux 目录下:wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-l ...

  6. 获取本地请求的真实IP地址

    1 /** 2 * 自定义访问对象工具类 3 * 4 * 获取对象的IP地址等信息 5 * 6 */ 7 public class CusAccessObjectUtil { 8 9 /** 10 * ...

  7. 读vue-cli3 官方文档的一些学习记录

    原来一直以为vue@cli3 就是创建模板的工具,读了官方文档才知道原来这么有用,不少配置让我长见识了 Prefetch 懒加载配置 懒加载相信大家都是知道的,使用Import() 语法就可以在需要的 ...

  8. Linux基础——安装以及常用命令

    Linux基础--常用命令 1.安装Vmware 进入VMware官网:  https://www.vmware.com/cn.html下载安装 镜像推荐网址下载:https://www.linux. ...

  9. 学习小计: Kaggle Learn Time Series Modeling

    ARIMA模型,参数含义参考:https://www.cnblogs.com/bradleon/p/6827109.html from statsmodels.tsa.arima_model impo ...

  10. 恶意软件开发——编写第一个Loader加载器

    一.什么是shellcode loader? 上一篇文章说了,我们说到了什么是shellcode,为了使我们的shellcode加载到内存并执行,我们需要shellcode加载器,也就是我们的shel ...