通过前两篇文章的介绍,我们已经能通过代码启动阴阳师游戏了。在进一步开始往下写代码之前,我觉得我们有必要了解一下ATX API的相关内容,这有助于我们在后面的项目中更好更快的实现
ATX的简单操作:
连接设备
假设启动的WebDriverAgent的地址是<code>http://localhost:8100</code>,那么可以使用下面的代码链接到设备:<pre>import atx
driver = atx.connect('http://localhost:8100',platform='ios')</pre>
常用操作
启动应用
需要知道应用的bundleId,可以通过<code>ideviceinstaller -l</code>查到。在查询之前,需要使用<code>brew install ideviceinstaller</code>来安装这个工具。查询到bundle ID后使用下面的代码就可以启动、停止应用
<pre>driver.start_app('com.netease.onmyoji')
driver.stop_app('com.netease.onmyoji')</pre>
拿到屏幕
<pre>screen = driver.display
print screen.width, screen.height</pre>
** 锁定当前屏幕(主要用于提高查询效率)**
<pre>
d.keep_screen()
d.free_screen()
</pre>
点击和长按
<pre>driver.click(100,100) # 点击坐标(100,100),原点在左下角
d.long_click(50, 100) # 长按坐标(50,100),原点在左下角</pre>
滑动
# 从(250,300)滑动到(100,150),用时为1s. 默认时间是0.2s
driver.swipe(250,300,100,150,1.0)
# 滑到到该元素,然后点击
driver(text="Login").scroll().click()
# 指定滑动的方向向右,方向有4个up | down | left | right
driver(text="Hello").scroll(direction="right", timeout=5.0)
输入框
首先要说明输入框要只支持自带的输入法,不支持搜狗
如果要找到输入框,需要用到Xpath相关的东西:
#给输入框赋值,输入用户名
driver(xpath=u"//TextField").set_text("someone@qq.com\n")
#给密码框赋值,输入密码
driver(xpath=u"//SecureTextField").set_text("password")
#清除输入框的文本
driver(xpath=u"//TextField").clear_text()
警告框
#当前弹出框的文本
driver.session.alert.text
#点击弹出框的确认
d.session.alert.accept()
#点击弹出框的取消
d.session.alert.dismiss()
返回到home
<pre>driver.home()</pre>
图片查找与点击
# 找到图片坐标
if driver.exists('button.png'): # 判断截图是否在屏幕中出现, 反馈查找到的坐标
print 'founded'
# 截图
driver.screenshot('screen.1920x1080.png') # 把截图存成一个文件
click_image函数
# 点击图片,如果图片没找到就报异常
driver.click_image("button.png")
# 添加图片描述 (通常用来生成测试报告)
driver.click_image("button.png", desc="hello button")
# 点击图片,如果图片没找到就返回一个空,不报异常
driver.click_image("button.png", safe=True)
# 长按一个图片
driver.click_image("button.png", action='long_click')
# 不等待的图片点击, 如果图片不存在直接返回None
d.click_nowait('button.png')
# 文件名添加截图手机的分辨率, 脚本运行在其他分辨率的手机上时可以自动适应
d.click_image("button.1920x1080.png")
多分辨率适配
# 下面这种方法会自动根据当前测试手机的分辨率选择合适的文件
# 比如手机分辨率1920x1080,代码会自动寻找文件4中文件之一,找到就返回
# - button@1920x1080.png
# - button@1080x1920.png
# - button.1920x1080.png
# - button.1080x1920.png
d.click_image("button@auto.png")