做者:清菡
博客:oschina、云+社区、知乎等各大平台都有。html
App 自动化目前用得是 Appium,有 Python 版本的Uiautomator2
。这个是直接经过Uiautomator2
去作的,一个是利用中间的 Appium 去作。Appium 跨平台跨语言。android
坐标
、id
、xpath
、android_uiautomator
、classname
、accesiblity_id
。web
accesiblity_id
是安卓的元素定位方式之一。小程序
这个跟 Web 自动化有些通用的操做以外,它有一些额外的操做。例如:滑屏操做、触屏操做、混合应用、toast 获取。微信小程序
swipe:swipe 也是经过touchAction
来实现的。微信
触屏操做:touchAction
框架
toast:toast 获取对安卓版本、Appium 版本都是有要求。koa
用 uiautomatorview 是捕捉不到的,经过 xpath 来获取 toast 信息。编辑器
xpath表达式 文本匹配
loc ='//*[contains(@text,"{}")]'.format("手机号码或密码")
contains
经过 xpath 表达式里面的contains
函数@text
,text
在安卓当中,它是个属性。函数
xpath 定位表达式,拿到它以后,常常用的是presence
。
# 等待的时候,要用元素存在的条件。不能用元素可见的条件。
try:
WebDriverWait(driver,10,0.01).until(EC.presence_of_elements_located((MobileBy.XPATH,loc)))
# 上限10秒就够了,确认toast在页面上存在的时候大概是多久,它都没有0.5秒,你去间隔0.5,可能消失了,你还只留在这。
print(driver.find_element_by_xpath(loc).text)
except:
print("没有找到匹配的toast!!!!")
作 Web 自动化或者其它的时候,都是等待元素可见。在 toast 信息获取的时候,是等待元素存在,而后获取它的文本内容。
这个地方有个几率的问题:用它去获取 toast,时间越短,几率越高。可能面临 1%-10%的失败率。固然不一样的产品是不同的。
原生控件关于 html 页面的元素标识是什么?
Web 自动化中一个页面中嵌入了另一个页面,用的是iframe
。webview 表明网页视图。
若是从原生控件中切换到网页视图当中,切换的名字叫作context
,切换的前提是获取到它。
获取到 webview 对应的context
,而后在这里面去操做。
从原生控件切换到 html 页面,经过context
切换以后,应该在 html 页面中作元素定位。
Uiautomatorview 没办法找到 html 页面,因此用 Uc-devtools。
找到元素以后,后续就是 Web 自动化操做了,要看到 Webview 页面的时候,必需要开启 debug 模式,不然你是看不到的。
网上有些操做能够强制的打开它,不过操做流程比较复杂,会破坏一些东西。
混合应用是 App 和 Web 自动化的结合。微信小程序其实就是 Web 自动化,只不过嵌在微信里面。
微信自己是个 App,在微信里操做,切换到小程序里面,在小程序里作想作的 Web 自动化测试。
原生控件+html 页面:混合应用-webview\切换 context\uc-devtools\web 自动化
import pytest
if __name__ == '__main__':
pytest.main()
这是以 Python 代码的方式来运行 Pytest 命令,来看看main
函数的源码:
以前在 cmd 中输入pytest -m
过滤下标签,好比 smoke 标签pytest -m smoke
,或者指定 html 报告pytest -m smoke -
都是在这里写的。
pytest -m smoke
这样的命令,在代码里写就行了。
它这里,第一个参数就是写的命令,可是它是个列表,用列表的方式存起来就行了。
import pytest
if __name__ == '__main__':
pytest.main(["-m","smoke"])
在命令行中用空格隔开的,在这里同样同样放在列表当中来。代码中的执行效果跟在 cmd 中执行的效果是如出一辙的。
App 自动化和 Web 自动化同样,都是这样分层的:
在 PO 模式中想要点击元素、操做元素也得等待元素可见,也有最基本的 4 种元素操做方法:输入操做、点击操做、获取它的文本内容、获取它的属性。
Locator 里面绑定了元素定位方式和定位类型。Locator 来自 PageLocators 文件夹中。
手机屏幕就那么大,App 要保证排版宽松,手指触屏,要保证点击一个功能不会碰到别的。
实际作自动化测试,Web 网页是很复杂的,App 自动化测试的周期要比 Web 自动化时间要短不少。
写框架先写页面,首先研究下页面构造,看下页面功能的关联性。
公众号 「清菡软件测试」 首发,更多原创文章:清菡软件测试 103+原创文章,欢迎关注、交流,禁止第三方擅自转载。