dogtail的使用方法(三)——启动应用

在UI自动化测试中,一切操作的都是从应用启动开始的,而在Linux桌面应用自动化测试中,我们启动应用的方法有多种,下面做一个简单的介绍:

1.使用dogtail启动

dogtail提供了应用启动的方法,在utils库中,使用run方法启动:

首先导入方法:

from dogtail.utils import *

调用run方法

run('deepin-music')

即可启动音乐

这种方法的优点是采用进程的方式直接启动,不依赖与UI,无论桌面或任务栏上是否存在应用图标,都可以正常启动。

但是在实际项目中,仍然存在一个问题,

如果使用ssh远程调用,或者Jenkins中执行测试脚本的时候,在sniff中会出现找不到应用,经过分析,可能是因为使用这种方法启动的时候,实际是采用一个子进程启动了应用,dogtail无法识别到。

2.从任务栏启动

使用dogtail点击任务栏上的应用图标

通常有两种方法:

(1)使用dogtail点击任务栏上的应用图标。

(2)已知应用图标在任务栏上的位置,然后使用鼠标点击对应坐标。

第二种方法的缺点是位置必须固定,如果移动位置就不行了,而使用第一种方法,无论位置在哪里,只要图标在任务栏上存在即可。

3.点击桌面图标启动

桌面图标目前是采用图像识别技术,定位到应用图标的坐标,然后通过pyauogui进行点击操作。

详细技术方案可以参考我的另外两篇博客:

基于opencv的模板匹配实现图像识别,返回在屏幕中的坐标

Python三方库PyAutoGui的使用方法

4.从启动器启动(俗称开始菜单)

启动中启动的实现逻辑实际和任务栏上启动差不多。

首先,需要使用鼠标点击任务栏上的启动器图标,或者键盘super键,将启动器呼出来,

然后,在启动器中点击对应的图标,

但是这里有个问题,启动器中的应用列表,一页展示不完,所以如果我们要点击的应用图标不在第一页怎么办,通常解决方案有两种:

(1)需要进行向下滑动,这里就涉及到相应的识别方案,判断如果不在第一页就往下滑动翻页。

(2)启动器提供搜索的功能,输入应用名称搜索,然后进行点击。

从实际操作中来看,采用第二种方法的效率会高一点。

5.终端命令启动

在python中,使用os.popen()或os.system()或者subprocess.Popen(),实现命令行启动,比如:

import os
os.popen('deepin-music')

这种方式启动是比较简单的,但是在实际项目中,仍然存在远程执行脚本的时候,dogtail无法识别的问题。

总结

以上几种方法,各有优缺点,在实际项目中:

(1)如果需要在Jenkins中做持续集成,建议使用第二种任务栏启动的方法。

(2)如果不会采用远程执行的,建议采用第一种或者最后一种方案。

(3)第三种和第四种启动方法,通常在测试用例中会涉及到,所以偶尔会用。

没伞的孩子,就要学会在雨中奔跑!
原文地址:https://www.cnblogs.com/mikigo/p/14155597.html