Linux GUI自动化测试工具 -- LDTP

目录

1. 背景

2. 环境

3. 安装和使用

1)下载地址

2)Windows下的安装和使用

3)Linux下的安装和使用

4. 踩到的“坑”

5. 参考资料


1. 背景

项目需要,研究了一下Linux下的GUI测试工具:LDTP。GNU LDTP(Linux Desktop Testing Project) 是一个 GNU/ Linux/ Unix 下的 GUI 应用测试工具。支持系统包括:FreeBSD/ Fedora/ Mac/ OpenSUSE/ OpenSolaris/ Windows/ Ubuntu等。本文介绍一下LDTP2的环境搭建,基本使用以及在使用中踩的坑。

2. 环境

  • 操作系统:Ubuntu 18.4/ Window7
  • LDTP: ldtp2 v3.5.1
  • 语言:Python2 >= 2.6; Python3 >= 3.0

3. 安装和使用

1)下载地址

操作系统地址
Linuxhttps://github.com/ldtp/ldtp2
Windowshttps://github.com/ldtp/cobra/releases

 

2)Windows下的安装和使用

a.双击 CobraWinLDTP-4.0.0.msi,按照提示安装完即可。

b.在<安装盘>\Program Files (x86)\VMware\CobraWinLDTP目录下,双击 CobraWinLDTP.exe,启动Server端。

c. 运行-》cmd,输入 Python3,进入Python命令;输入如下命令,如果没有报错,则证明安装成功。

3)Linux下的安装和使用

这里有两种方法。

a. 度娘上都能查到的在线安装方法:

apt-get install ldtp

同样的,安装完成后,导入LDTP,如果没有报错则表示安装成功。

b. 源码安装(这里以作者环境和安装过程为例,均是亲验总结,如有其他环境或问题需要具体分析):

i. 安装完Ubuntu后,缺省无法ssh连接,会出现报错:Permission denied(publickey, password)。修改方法:

  • 编辑ssh配置文件: # vi /etc/ssh/sshd_config。去掉如下两个参数的注释,修改参数值:
    • PermitRootLogin yes
    • StrictModes yes
  • 重启ssh服务。# /etc/init.d/ssh restart

ii. 修改apt源。这是由于作者的环境无法直接对接外网镜像源,若能直接连网则可以忽略该步骤。

  • # vi /etc/apt/sources.list。全部替换为本地源,这里列举其中部分源信息

    deb [trusted=yes] http://本地源IP/本地源路径 bionic main restricted universe multiverse

    deb-src [trusted=yes] http://本地源IP/本地源路径 bionic main restricted universe multiverse

  • 更新源后升级apt。# apt update -y

iii. 修改gsettings。这里需要在Ubuntu系统中进行修改,不能直接ssh连接修改。

# gsettings set org.gnome.desktop.interface toolkit-accessibility true
# gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled true

补充:gsettings的部分命令

# gsettings list-schemas | grep interface
# gsettings list-keys org.gnome.desktop.interface | grep toolkit
# gsettings get org.gnome.desktop.interface toolkit-accessibility

iv. 安装LDTP

如若直接按照github上的安装过程,是无法使用的(这里被坑了好久),首先需要安装如下一些依赖包。

# apt install -y python3-pip
# apt install -y python3-setuptools
# pip3 install twisted -i <本地源> --trusted-host <本地源IP>
# apt install -y python-ldtp

v. 修改源码。这是因为Python3中已经没有unicode()这个方法了,而LDTP的部分源码是基于Python2进行开发的。为了解决这个兼容性,只能进行源码修改,否则无法获取中文字符。

# vi /usr/local/lib/python3.6/dist-packages/ldtp-3.5.1-py3.6.egg/ldtp/__init__.py

将gettextvalue()的返回从unicode()改为str():

vi. 重启Ubuntu。一定要记得做完上述的修改后,重启操作系统哦~~~

vii. 基本使用方法同windows。

  • mouseleftclick('frm0', 'btn关闭')              # 点击frm0中的“关闭”按钮
  • gettextvalue('frm0', 'txt0')                       # 获取frm0中文本框txt0中的文本
  • setcursorposition('frm0', 'txt0', 1)           # 将光标放在frm0中文本框txt0的首字符位置

4. 踩到的“坑”

1)在Windows中没有启动Server端。出现报错:ConnectionRefusedError: [WinError 10061]

2)在Windows缺省安装之后,导入LDTP包是正常的,但是使用方法getwindowlist()却出现如下报错:

TypeError:unsupported operand type(s) for *: 'map' and 'list'

报错的代码只是一个日志记录,并不影响功能使用,所以将这里注释后,重新导入LDTP包即可。

3)部分方法在使用时出现有这样的报错:Unable to get editable textText cannot be entered into object. 。暂时还没有找到解决方法,怀疑是由于元件有属性没有设置正确导致的。

4)按照说明文档中进行远程连接# ldtp -s 时,报错: ModuleNotFoundError: No module named 'xmlrpc_daemon'。暂时没有找到解决办法。不清楚是没有使用对远程连接场景还是确实有错误。

5. 参考资料

https://ldtp.freedesktop.org/ldtp-tutorial.pdf

https://ldtp.freedesktop.org/user-doc/d7/d25/a00182.html#Syntax

https://www.cnblogs.com/backpacker/p/10945514.html

https://blog.csdn.net/amy0428/article/details/52041909?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-5-52041909.nonecase&utm_term=linux%E8%87%AA%E5%8A%A8%E5%8C%96%E5%AE%89%E8%A3%85%E5%B7%A5%E5%85%B7  -- 其他工具

 

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页