Appium测试框架搭建
本文代码github地址:https://github.com/yueyue10/MyApplication/tree/master/python_project/python_demo/appium_demo
因为Appium网上的资料大多都是基础的,包括环境搭建、单界面的测试、单控件的测试等。
关于Appium测试框架的文章却没有查到,所以个人这篇文章主要是关于Appium框架的搭建。
Appium环境的搭建过程就不介绍了,网上可以查一下相关文章,也可以在我的github地址项目中看一下相关参考。
一、基础类的创建
参考Android控件的思路:View,ViewGroup,Activity。创建控件基类AppElement,所有ViewGroup和Activity都继承自它。
1. 在AppElement里面写入类的属性webdriver,这样写是为了在webdriver初始化的时候直接将其赋值给AppElement(类似APP里面的Application里面的属性,只需要初始化一次在所有界面都可以调到。)并且可以在所有控件中都可以调用。
2. 在AppElement里面添加基础方法,如查看控件findElementId方法并处理延迟以及异常捕捉等。以及其他常用方法,如swipeUp、swipeDown、waitTime等。
3. 创建界面的标题栏TitleLayout,并初始化类的公共属性title,back,iv_right分别是标题文本控件,返回按钮,右侧功能按钮。
写入界面标题栏的基础方法finish,getTitle,rightClick,分别是点击返回按钮,获取标题文本控件文字,点击右侧功能按钮。
4. 创建界面的Activity基类,并初始化界面的title属性即标题栏。在初始化界面的时候使用driver.wait_activity方法等待界面出现,防止界面未加载完成就查找控件产生异常等。
上面的Activity的包名的配置在module包下activity_list中:
二、界面的创建
1. 例如创建一个建议反馈的界面FeedbackActivity。继承自Activity基类,并使用Activity.__init__(self, self.__class__.__name__)方法复写Activity的__init__方法,和java不同必须复写才能执行Activity的__init__。这里将当前类的__name__传入Acitivity中执行上面将的wait_activity方法。
2. 在界面中写入操作控件的方法和逻辑,例如在建议反馈界面提示用户输入“反馈内容”方法,以及下面的“添加图片”方法等。可以在初始化FeedbackActivity界面时执行所有逻辑,也可以在创建FeedbackActivity实例后单独调用方法。这样一个测试界面就编写完成了。
3. 因为我们启动APP的时候需要配置启动界面如:'appActivity': 'com.ennova.dreamlf.module.main.splash.SplashActivity',然后再启动界面自动跳转到APP的主页。所以我们应该编写一个APP启动后进入MainActivity主页的测试类。并创建homeTest方法实现首页栏目里面控件的点击逻辑,具体通过home_fragment.gridClick(3)实现点击“建议反馈”控件的逻辑。
4. 在首页的“建议反馈”控件点击后,通过创建feedbackactivity = FeedbackActivity()来测试“建议反馈”界面。
三、运行测试程序
1. 如果你的Appium-Service已经启动,则你可以使用下面的代码通过AppiumService连接到Android设备或模拟器并启动APP,然后就可以获得webdriver实例。将获得的webdriver赋值给AppElement.driver,这样所有AppElement类及其子类都可以使用driver。APP启动后通过创建mainAc = MainActivity()实例就可以测试首页。通过上面介绍的代码,即可进入FeedbackActivity建议反馈界面,并进行测试。
至此测试框架已经完成。
appium_demo项目除了包含appium测试框架外,同时包含了启动Android模拟器程序,以及启动AppiumServie程序。