QT4W简介¶
QT4W (Quick Test for Web) 是QTA自动化体系内实现支持Web自动化测试能力的支持库,是QTA的Android、iOS、Windows和Mac自动化测试中实现Web自动化测试能力的基础。
原生和Web控件的关系¶
要理解QT4W和QTA其他的针对原生控件的QT4x(x表示i/A/C/Mac等)的关系,可以先了解一下原生控件和Web控件的关系。
+-------------------------------+
| |
| +-------------------------+ | +-------------------------+
| | | | | +------------+ |
| | | | | | | |
| | | | | | Element | |
| | | | | | | |
| | | | | +------------+ |
| | | | | +------------+ |
| | | | | | | |
| | | | | | Element | |
| | <------------------------> | | |
| | | | | +------------+ |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| +-------------------------+ | +-------------------------+
| Web View Control | Web Page
| |
| |
+-------------------------------+
Native Window
Layers of Native Layers of Web
如上图所示,我们可以理解为,所有的网页(Web Page)都是在原生控件提供的一个Web View的基础上实现的。
统一的Web控件接口¶
参考原生控件和Web控件的关系,QT4W也设计了类似的Web控件使用接口:
from qt4w.webcontrols import WebPage
wv = SomeNativeWebView()
page = WebPage(wx)
page.controls("XXX").click()
无论是哪个操作或终端的UI自动化的Web自动化部分,QTA都是统一使用以上模式的接口的,因此,QT4W提供的第一个功能,就是在QTA的自动化测试工具体系中,提供统一的Web控件识别和操作的接口,关于这块的更多内容,请参考《Web控件识别和操作》。
Write Once Run Anywhere¶
在很多情况下,Web实现的页面,是保持在跨端跨平台上一致的,很多时候也是在一份相同的代码实现的,这个是Web本身的魅力之一。因此,在这种情况下,针对跨平台跨端的Web界面,测试自动化本身也是可以做到一份测试脚本,同时在不同终端和平台上执行,实现Write Once Run Anywhere,这样可以大大的降低测试自动化的维护的成本。为了达到这样的效果,除了统一的Web控件操作接口外,QT4W还提供了统一的Webview实例化框架,也就是Browser框架,更多的详情请参考《跨端跨平台测试》。
可扩展性¶
在各个QT4x的支持下,QT4W目前支持多种操作系统下,不同浏览器内核和混合客户端的Web自动化。目前支持的情况如下:
WebView | 平台或操作系统 | 说明 | 相关实现代码 |
---|---|---|---|
IE | Windows | IE浏览器和内嵌页面使用,支持IE 7~11 | 由QT4C提供 |
Chrome | Windows | Chrome浏览器和内嵌页面使用 | 由QT4C提供 |
TBS | Windows | QQ浏览器和相关内嵌页面使用 | 由QT4C提供 |
CEF | Windows | Chromium内嵌页面使用 | 由QT4C提供 |
Chrome | Linux | Linux下的Headless模式的Chrome浏览器使用 | 由chrome-headless-browser提供 |
AndroidBuildin | Android | Android系统内置浏览器和内嵌页面使用 | 由QT4A提供 |
X5 | Android | QQ移动浏览器和X5内核内嵌页面使用 | 由QT4A提供 |
XWalk | Android | XWalk内核内嵌页面使用 | 由AndroidWXMPLib提供 |
iOSBuildin | iOS | iOS系统内置浏览器和内嵌页面使用 | 由QT4i提供 |
微信小程序&微信H5 | Android微信 | 微信小程序或者微信内部的H5页面使用 | 由AndroidWXMPLib提供 |
Chrome | MacOS | Mac OS下的Chrome浏览器和内嵌页面使用 | 由QT4Mac提供 |
QT4W也支持用户自定义扩展来支持更多的兼容性。更多信息请查阅《扩展QT4W》章节。