UI自动化:appium初分享

appium运行原理:

安卓原理:

1、Appium启动的时候,会创建一个http\\127.0.0.1:4723\wd\hub服务端(中转站)

2、4723端口接收client(也就是测试脚本)发来的请求,解析对应的请求

a. 执行脚本时,client-java将脚本翻译为webdriver 协议,与appium server通过json 进行交互;

b. appium server 通过webdriver协议发送请求给bootstrap.jar包调用UI Automator命令实现操作

c. bootstrap 把执行结果转发回appium server,appium server再把结果返回给client

ios原理:

a. 执行脚本时,client-java将脚本翻译为webdriver 协议,与appium server通过json 进行交互;

b. appium server 通过webdriver协议并将翻译为 Instruments命令,通过UIAutomation执行

c.Instruments再把执行结果转发回appium server

 

appium环境安装:

运行appium需要的环境:appium  +  node

java环境: jdk  +  sdk

Appium:

  • appium desktop  : 直接下载会在桌面有图标,点击就可以打开
  • appium server  : CMD- appium 打开 服务   

JDK: cmd -- java -version(查看java版本号)

  • 系统变量→新建 JAVA_HOME 变量 ,变量值填写jdk的安装目录
  • 系统变量→寻找 Path 变量→编辑,在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
  • 系统变量→新建 CLASSPATH 变量

变量值填写   .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)

App元素定位: uiautomatorviewer(SDK自带)

  • 目录一般在SDK目录下的Tools下

Node:cmd -- node -v(查看node 版本号)

  • 部署Node:环境部署在PATH下或者新增一个Node _path下,新增一个目录  目录内容就是Node下的目录

Appium:cmd -- appium -v(查看appium 版本号)

  • 部署Appium:找到Appium下的bin文件夹,点击进去后复制目录在 环境部署PATH下新增一个

appium简单语法:

Appium 连接手机:

DesiredCapabilities capabilities = new DesiredCapabilities();

   capabilities.setCapability("deviceName", "meizu-m2-88UFBMH25DV4");//(手机型号)

    //capabilities.setCapability("deviceName", "huawei-sla_al00-3UQBB17715512295");

   capabilities.setCapability("automationName", "Appium");

   capabilities.setCapability("platformName", "Android");

   capabilities.setCapability("platformVersion", "5.1");   //(系统型号)

   // capabilities.setCapability("platformVersion", "7.0");

   capabilities.setCapability("unicodeKeyboard", "True");   //  可以输入中文 需要放在app之前

   capabilities.setCapability("resetKeyboard", "True");     //可以输入中文         

   capabilities.setCapability("appPackage", "com.***.****");//(app包名)

   capabilities.setCapability("appActivity", ".ui.splash.*****");//(包内的主activity)

   AppiumDriver driver =new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

获取App页面的所有元素:

String a=driver.getPageSource();

定位App页面元素(使用uiautomatorviewer 定位元素):

定位一个元素:

driver.findElementByName();//根据text

driver.findElementById();//根据 ID 定位

Thread.sleep(20);// 点击完成后,休眠20秒

driver.findElementByName().senKeys("可以输入任何字");// Text定位到之后可以直接使用输入字符  

driver.getPageSource() //获取App当前界面所有的元素

driver.getPageSource().lastIndexOf()//搜索当前页面所有元素  想要的元素

TouchAction a=new TouchAction(driver);

a.tap(300,300).release().perform();  //点击屏幕 300*300的地方

driver.quit();//关闭driver,如果不关闭 下次启动会报错

定位一组元素

driver.findElementsById("com.zy.mcc:id/scene_name_text");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值