1、demo案例
- selenium 版本建议 3.141.0(pip install selenium==3.141.0)
- appium-python-client 版本建议 1.2.0
import time from appium import webdriver from appium.webdriver.common.appiumby import AppiumBy from appium.webdriver.common.mobileby import MobileBy class TestAppDemo: def setup(self): # 创建一个字典,desirecapability # 1、打开API Demo 应用 caps = {} caps["platformName"] = "Android" # Android包名和页面名,获取命令如下: # mac/linux:adb logcat ActivityManager:I |grep "cmp" # windows:adb logcat ActivityManager:I |findstr "cmp" caps["appPackage"] = "io.appium.android.apis" caps["appActivity"] = ".ApiDemos" caps["deviceName"] = "VNX9X19803001101" # 保留登录信息不重置 caps["noReset"] = "true" # driver变成self.driver,由局部变量变为实例变量 self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) self.driver.implicitly_wait(5) def test_app(self): # 2、点击 OS,进入下个界面 os_ele = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "OS") os_ele.click() # 3、点击【Morse Code】 self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Morse Code").click() input_ele = self.driver.find_element(AppiumBy.ID, "io.appium.android.apis:id/text") # 4、清空输入框内容 input_ele.clear() # 5、 输入内容【ceshiren.com】 input_ele.send_keys("ceshiren.com") time.sleep(2) # 6、返回上一个页面 self.driver.back() # 7、返回上一个页面 self.driver.back() # 8、断言 assert os_ele.text == "OS" def teardown(self): # 9、关闭应用,退出app self.driver.quit()
- 启动应用
- 方式一:
webdriver.remote("url",desirecapability)
- 方式二:
launch_app()
启动应用,热启动,注意是进入到app首页,而不是前一个界面(该方法已废弃) self.driver.launch_app()
2、capability 配置参数解析
官网:Desired Capabilities - Appium
-
功能:配置 Appium 会话,告诉 Appium 服务器需要自动化的平台的应用程序
-
形式:键值对的集合,键对应设置的名称,值对应设置的值
-
主要分为三部分
- 公共部分、ios 部分、android 部分
- 公共部分参数配置
newCommandTimeout(默认60s):上一次请求与下一次请求的间隔时间,使用场景:上传大的文件、安装应用超过60s
udid:多台设备时用到,以此来找到运行的设备,用来区分设备的唯一标识
autoGrantPermissions:自动授予权限
noReset:不停止app,不去清除app数据,不卸载app
fullReset:停止app,去清除app数据,卸载app
dontStopAppOnReset:不停止app,在原来的操作步骤上继续执行(方便调试)
- Android 部分特有参数配置
- iOS 独有
3、Session
- Appium 的客户端和服务端之间进行通信的前提
- 通过
Desired Capabilities
建立会话
4、android基本知识
5、iOS