Appium Desktop
- 元素定位
与Android的uiautomatorviewer一样,可进行元素定位,某些app 在 uiautomatorviewer中获取不到元素,小编这里就遇到获取某个页面元素时,一直报错,使用AppiumDesktop完美解决,AppiumDesktop也可以定位iOS的APP,以下示例都在Android中演示。
- 录制脚本
支持多种语言,语言可自己选择,目前这个功能只做学习的工具,不能够作为代码生成器(In sum, it is a learning tool, not a robust code generation feature, and should be used as such.)。
启动Appium Desktop服务
- 点击start server启动服务
- 启动后页面
- 启动Appium Inspector
- 启动AppiumDesktop后点击该页面右上角的Start New Session按钮,就会启动一个新的会话窗口(如下图),这里配置Desired Capabilities信息:
这里是以Android机为例进行设置:
- platformName:Android机
- platformVersion:Android机系统版本
- deviceName:Android机名称,通过adb devices 命令获取
- appPackage:app包名
- appActivity:启动栈名称。
- 想要获知更全面的Desired Capabilities请看官网:https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
点击Save As...进行保存,设置信息被保存在“Saved Capability Sets”里方便以后使用。点击Start Session就可以启动Inspector了。
- 元素定位
点击select element 按钮,选中需要定位的元素,右侧即展示出对应的元素定位信息,appium自动判断可通过哪些元素进行定位。下图例子账号框可通过xpath定位到。
- 模拟滑动操作
在页面中,我们怎么模拟手指滑动操作呢?
点击 Swipe By Coordinates,模拟手指在手机上的操作,点击开始点和结束点实现滑动
- 操作元素
点击某个元素进行下一步操作,比如例子中定位到密码框,输入密码,清除文本框内容等操作。
- 录制脚本
点击脚本录制按钮,对元素进行操作,脚本录制语言是可选择的。
我这里是选择Python,操作了输入账号与输入密码
生成的示例代码如下:
# This sample code uses the Appium python client# pip install Appium-Python-Client# Then you can paste this into a file and simply run with Python
from
appium
import
webdrivercaps = {}caps[
"platformName"
] =
"Android"
caps[
"platformVersion"
] =
"6.0"
caps[
"deviceName"
] =
"ssss2"
caps[
"appPackage"
] =
"com.taobao.mobile.dipei"
caps[
"appActivity"
] =
"com.eg.android.AlipayGphone.AlipayLogin"
driver = webdriver.Remote(
"http://localhost:4723/wd/hub"
, caps)el3 = driver.find_element_by_xpath(
"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.EditText"
)el3.send_keys(
"123456"
)el4 = driver.find_element_by_xpath(
"/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[2]/android.widget.EditText"
)el4.send_keys(
"123456"
)
driver.quit()