Selendroid UI自动化测试入门

Selendroid UI 自动化测试入门

Selenroid 官方自称为Selenium for Android,这个名称真不是吹的,执行速度相较于目前大红大紫的Appium真的是很快了,不知道为啥这么好一个项目就这么黄了(摊手),按照目前Android版本的迭代速度,估计也是为了顺应潮流吧,以至于出了后面的Appium。

写这个主要是为了记录一下研究成果不打算深究,毕竟用的人少,网上资料也相对较少,后期坑肯定比较多,还是用比较主流的Appium吧。

  之前用官方的示例跑都是可以跑成功的,但是用自己公司的App跑老是不成功,看到官方的一句话: The reason for this is that a customized selendroid-server for the app under test (AUT) will be created. Both apps (selendroid-server and AUT) must be signed with the same certificate in order to install the apks on the device.

 意思是说selendroid-server AUT App都会签上相同的签名,言外之意就是启动selendroid server会自动给App签名,但是运行命令

java -jar selendroid-standalone-0.17.0-with-dependencies.jar -app  xxx.apk虽然能签名,但是每次跑脚本安装App,启动App程序就会崩溃。心想难道只能玩官方的App?不可能吧,开发者没那么菜吧…但是网上又没有找到有详细记录跑非官方App成功的记录,后面看到官网有server启动参数

Selendroid-Standalone command line parameters

-keystore

Specify the file of the keystore to use.

-keystoreAlias

The alias of the keystore to be used

-keystorePassword

The password for the keystore to be used

发现有签名相关的参数,然后想大胆尝试一下,问开发童鞋要了打包的签名文件及参数,加在服务启动命令行一跑,程序安装后启动不崩溃了,另外多启动两次还是不会崩溃,心里很是惊喜(离成功不远了) 

后面运行命令

java -jar selendroid-standalone-0.17.0-with-dependencies.jar -keystore xxx.keystore -keystoreAlias mykey -keystorePassword 123456  -selendroidServerPort 9999 –app  xxxx.apk 

显示端口正常启动

启动成功后就可以在浏览器http://localhost:4444/wd/hub/status查看服务信息了

然后按照官方示例所说,在脚本中加个断点,然后以调试的方式运行即可以在浏览器中对App中的元素进行定位了,运行脚本,只要App能起来不退基本就是能通过在浏览器中http://localhost:4444/inspector通过selendroid的inspector 来定位元素了,selendroid的inspector可以根据用户的操作进行简单的脚本录制,如下图:

好了,可以尽情的写脚本了。

需要注意的坑:

Selendroid用的是老版本的Android SDK,其中有个命令list avds这个命令在新版本的Android SDK中是没有的,故小编是用了老版本的SDK,名字是这个android-sdk_r24.4.1-windows,不然会一直提示没有那个命令(其实替换里面的tools文件夹里的文件即可)

附上脚本(基本是录制的):

/*

 * Copyright 2012-2014 eBay Software Foundation and selendroid committers.

 *

 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except

 * in compliance with the License. You may obtain a copy of the License at

 *

 * http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software distributed under the License

 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express

 * or implied. See the License for the specific language governing permissions and limitations under

 * the License.

 */

package sf.ui.test;

import io.selendroid.client.SelendroidDriver;

import io.selendroid.common.SelendroidCapabilities;

import org.junit.After;

import org.junit.Assert;

import org.junit.Before;

import org.junit.Test;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

public class UserPostsTest {

  private WebDriver driver = null;

  @Before

  public void setup() throws Exception {

           //appId

    driver = new SelendroidDriver(new SelendroidCapabilities("com.sf.bulktransit.flight:2.8.0.5"));

  }

  @Test

  public void assertUserAccountCanRegistered() throws Exception {

           System.out.println("=================");

          

           WebElement element1 = driver.findElement(By.xpath("//EditText[@id='etWorkName']"));

           element1.sendKeys("140399");

          

          

           WebElement element2 = driver.findElement(By.xpath("//Button[@id='btnLogin']"));

           element2.click();

           Thread.sleep(500);

           WebElement element3 = driver.findElement(By.xpath("//TextView[@id='tvScanWork']"));

           element3.click();

           Thread.sleep(500);

           WebElement element4 = driver.findElement(By.xpath("//AllCapEditText[@id='etPostNo']"));

           element4.sendKeys("DB");

           Thread.sleep(500);

           WebElement element5 = driver.findElement(By.xpath("//EditText[@id='etStationNo']"));

           element5.sendKeys("1");;

           WebElement element6 = driver.findElement(By.xpath("//Button[@id='btnConfirm']"));

           element6.click();

           Thread.sleep(1000);

           WebElement element7 = driver.findElement(By.xpath("//Button[@id='btnConfirmWork']"));

           element7.click();

          

  }

  @After

  public void teardown() {

    driver.quit();

  }

}

总结:

其实也没啥,就是要多换个角度去思考,去尝试,官方资料绝对是权威参考!

主要2点需要注意:

  1. Android SDK的版本
  2. 签名问题,如果默认命令启动App签名有问题,建议问下开发童鞋签名文件和用户名、密码应该是可以签过的
  3. 多琢磨官方给出的示例教程,绝对没有一句废话,需要细细琢磨。

参考:

Selendroid: Getting started

Selendroid: Inspector

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果你想学习Python UI自动化测试,下面是一些入门步骤和资源可以帮助你开始。 1. 学习Python基础知识: Python是一种常用的编程语言,在进行UI自动化测试时经常使用。你可以从Runoob网站上学习Python基础知识,它提供了一个Python3的教程供你参考。 2. 了解UI自动化测试的基本概念: UI自动化测试是通过模拟用户的操作来测试应用程序的用户界面。在开始学习UI自动化之前,你需要了解一些基本概念,例如页面对象模型(Page Object Model)和定位元素等。 3. 学习Selenium库: Selenium是一个流行的用于进行Web应用程序UI自动化测试的工具。它支持多种编程语言,包括Python。可以通过Selenium库来模拟用户在浏览器中的操作,例如点击按钮、输入文本等。你可以在Runoob网站上找到Selenium的教程。 4. 掌握基本的UI自动化测试框架: 学习使用一些常用的UI自动化测试框架可以帮助你更好地组织和管理测试代码。例如,Pytest是一个常用的Python测试框架,它提供了一些方便的功能,如测试用例的管理和报告生成等。 5. 练习实际项目: 通过实际项目来练习你的UI自动化测试技能是非常重要的。你可以选择一个简单的网页应用程序或者一个开源项目来进行练习。 总结起来,学习Python基础知识,了解UI自动化测试的基本概念,掌握Selenium库以及一些常用的UI自动化测试框架,然后通过实际项目来练习,这些都是学习Python UI自动化测试入门步骤。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的宝藏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值