Appium自动化测试

1、为什么不是所有功能都用自动化测试?

  1. 自动化测试是需要写代码的,用代码来测试系统,所以首次成本比较高
  2. 被测系统的功能,回归测试的频率越高,那么使用自动化测试的性比较越高
  3. 哪些功能需要频繁回归测试:系统主要功能,用户访问量大的功能
  4. 注意点:需求不稳定的功能点不建议写自动化代码,成本比较高

Appium 安装准备:

1、jdk安装

安装地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

 安装步骤:超详细JDK下载与安装步骤_下载jdk教程_最爱吃鱼罐头的博客-优快云博客

2、android sdk安装

【Android sdk for windows】
1.下载android sdk

https://dl.google.com/android/android-sdk_r24.4.1-windows.zip

(也可以直接安装 android studio 开发工具,内部集成了android-sdk)
安装步骤:【1】 android jdk环境安装和 开发工具androidStudio 安装[ mac+windows版本]_安果移不动的博客-优快云博客

3、nodejs安装

下载地址: Node.js 

安装步骤:nodejs安装和环境配置-Windows_nodejs安装及环境配置win7_七维大脑的博客-优快云博客

 4、安装appium

下载地址:Releases · appium/appium-desktop · GitHub

 需要单独安装appium inspector

Appium Inspector是appium自带的一个元素定位工具,可以通过以下链接进行安装。

还有一个apksigner.jar的文件需要安装,并且要放在platform-tools目录下

启动appium:

 如何后续启动有问题的话,可以检查一下配置:

 启动后页面如下:

同时需要启动appium inspctor:

appium inspector设置成功后会连接移动设备:并打开配置好的app页面,appium也会根据连接返回对应的信息 

Appium要填写的参数

{
  "platformName": "Android",
  "platformVersion": "5.1.1",//设备系统版本号
  "deviceName": "16a51c2a",//设备名称,可以通过adb devices获取
  "appPackage": "com.laifu.laiqio.site",//要启动的app名称。手机打开APP,使用adb shell dumpsys activity|findstr mFocusedActivity 获取appPackage。
  "appActivity": "io.dcloud.PandoraEntryActivity",//启动app后的界面。手机打开APP,使用adb shell dumpsys activity|findstr mFocusedActivity 获取appActivity。
}

{
  "platformName": "Android",
  "appium:platformVersion": "5.1.1",
  "appium:deviceName": "emulator-5554",
  "appium:app": "C:\\Users\\baker.yuan\\Desktop\\LAIFU2023021538.apk",
  "appium:appPackage": "com.laifu.laiqio.site",
  "appium:appActivity": "io.dcloud.PandoraEntryActivity",
  "appium:noReset": true
}

第一个python代码:

from appium import webdriver

desired_caps={

  "platformName": "Android",
  "appium:platformVersion": "5.1.1",
  "appium:deviceName": "emulator-5554",
  "appium:app": "C:\\Users\\baker.yuan\\Desktop\\LAIFU2023021538.apk",
  "appium:appPackage": "com.laifu.laiqio.site",
  "appium:appActivity": "io.dcloud.PandoraEntryActivity",
  "appium:noReset": True
}

driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

driver.quit()

连接好手机后,手机上操作,然后点击刷新按钮更新页面,和手机保持同步

土巴兔登录流程:

from time import sleep

from selenium.webdriver.common.by import By
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

# For W3C actions
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.actions.pointer_input import PointerInput

caps = {}
caps["platformName"] = "Android"
caps["appium:platformVersion"] = "10"
caps["appium:deviceName"] = "78ff4f1e"
caps["appium:appPackage"] = "com.to8to.housekeeper"
caps["appium:appActivity"] = "com.to8to.housekeeper.TLaunchActivity"
caps["appium:noReset"] = True
caps["appium:ensureWebviewsHavePages"] = True
caps["appium:nativeWebScreenshot"] = True
caps["appium:newCommandTimeout"] = 3600
caps["appium:connectHardwareKeyboard"] = True

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
#点击跳过
driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/launch_rect_skip").click()
# driver.find_element_by_id("com.to8to.housekeeper:id/launch_rect_skip").click()
sleep(2)
#选择我的
# driver.find_element(by=By.CLASS_NAME,value='android.widget.ImageView').click()
# son='resourceId("com.to8to.housekeeper:id/ttab_own").childSelector(className("android.widget.ImageView"))'
# driver.find_element_by_android_uiautomator(son).click()
#最后选择Xpath定位到的
driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.view.ViewGroup[5]/android.widget.ImageView").click()
#选择立即登录
driver.find_element(by=By.CLASS_NAME,value="android.widget.TextView").click()
# driver.find_element_by_class_name("android.widget.TextView").click()
# #删除手机号
# driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_img_reset_account").click()
# #输入手机号
# driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_edit_account").send_keys("15736418790")
# #获取验证码
# driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_txt_countdown").click()
#点击密码登录
# driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_txt_changed_login").click()
sleep(1)
#输入手机号
driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_edit_account").send_keys("15736418790")
#输入密码
driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_edit_password").send_keys("test666#")
#勾选协议
driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_cb_left").click()
#点击登录
driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_btn_commit").click()
# driver.quit()

 遇到有些按钮定位不到元素,可以试试platforms里面自带的一个uiautomator.jar

 除了基本的id定位还可以用text文本定位:直接text。还可以用contains

滑动的方法:

 text定android_uiautomator

设置密码,移动按钮:press按下不动,wait等待,move_to移动

 页面缩放:

代码实现: 

 

 

 

 

自动化测试框架:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值