Python移动端自动化

Appium是一个跨平台移动端自动化测试工具,可以为IOS和Android平台创建自动化测试用例。可以模拟App内部的各种操作,如点击、滑动、文本输入等。只要我们手工操作的动作Appium都可以完成。

一、自动化环境搭建

Java JDK
Android SDK
Appium
Python

二、启动

Appium启动App的方式有两种:一种是用Appium内置的驱动器来打开App,另一种是利用Python程序实现此操作。

三、API

1、初始化

from appium import webdriver

server = 'http://localhost:4723/wd/hub'
desired_caps = {
  'platformName': 'Android', # 被测手机是安卓
  'platformVersion': '8', # 手机安卓版本
  'deviceName': 'xxx', # 设备名,安卓手机可以随意填写
  'appPackage': 'tv.danmaku.bili', # 启动APP Package名称
  'appActivity': '.ui.splash.SplashActivity', # 启动Activity名称
  'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
  'resetKeyboard': True, # 执行完程序恢复原来输入法
  'noReset': True,       # 不要重置App
  'newCommandTimeout': 6000,
  'automationName' : 'UiAutomator2'
}
driver = webdriver.Remote(server, desired_caps)

2、查找元素

from selenium.webdriver.common.by import By

可以通过 Selenium 中通用的查找方法来实现元素的查找

el = driver.find_element_by_id('')
els = driver.find_element(By.ID,'')

在Android平台上,可以使用UIAutomator来进行元素选择

el = driver.find_elements_by_android_uiautomator('new UiSelector().description('Animation')')

在IOS平台上,可以使用UIAutomator来进行元素选择

el = driver.find_elements_by_ios_uiautomator('.elements()[0]')

使用IOS Predicates来进行元素选择

el = driver.find_element_by_ios_predicate('wdName == "Buttons"')

使用IOS Class Chain来进行选择

el = driver.find_element_by_ios_class_chain('XCUIElementTypeWindow/XCUIElementTypeButton[3]')

3、点击
tap(self,positions,duration=None) 该方法模拟手指点击(最多五指)

driver.tap([(100, 20), (100, 60), (100, 100)], 500)

click()

find_element_by_id('com.tencent.mm:id/btn').click()

4、屏幕拖动

scroll(self,original_el,destination_el) 方法模拟屏幕滚动
original_el:被操作元素
destination_el:目标元素

swipe(self,start_x,start_y,end_x,end_y,duration=None)  方法模拟屏幕滑动

flick(self, start_x, start_y, end_x, end_y) 方法模拟从A点快速滑动到B

5、拖拽

drag_and_drop(self,original_le,destination_el) 将某个元素拖动到另一个目标元素上

6、文本输入

set_text() 方法实现文本输入

7、动作链
与Selenium中的ActionChains类似,Appium中的TouchAction可支持的方法有tap()、press()、long_press()、release()、move_to()、wait()、cancel()等

如果想要实现拖动操作,可以用如下方式:

els = self.driver.find_elements_by_class_name('listView')
a1 = TouchAction()
a1.press(els[0]).move_to(x=10, y=0).move_to(x=10, y=-75).move_to(x=10, y=-600).release()
a2 = TouchAction()
a2.press(els[1]).move_to(x=10, y=10).move_to(x=10, y=-300).move_to(x=10, y=-600).release()

你可能感兴趣的:(python,python,自动化,开发语言)