robotframework自动化测试框架

手把手教你学robotframework自动化框架(第七章:出坑

2021-01-26  本文已影响0人  fengzhulin

目录

1、环境配置(完成)

2、一个简单的实例(完成)

3、让用例更完善一些(2021年01月15日完成完成)

4、用例的前置和后置(2021年01月18日完成)

5、关键字的封装和传参(2021年1月23日完成)

6、创建自己的资源文件(2021年1月23日完成)

7、出坑秘籍,问题汇总(2021年1月25日完成)

8、如何自己编写一个library(2021年1月28日完成)

9、数据库连接

9、如何支持win32应用

10、接口测试

11、持续集成

12、自定义包

13、ride使用(快捷键、tear down、timeout、template、tags)

14、常见问题

问题1、安装后,testcase的编辑区域很小无法使用。

--->解决:

这是因为ride和python3.8兼容不好,可以升级ride。

pip install -U https://github.com/robotframework/RIDE/archive/master.zip

升级后正常。

问题2、执行报错

command: pybot.bat -A C:\Users\ADMINI~1\AppData\Local\Temp\RIDEn5q1l5cf.d\argfile.txt --listener D:\Python38\lib\site-packages\robotide\contrib\testrunner\TestRunnerAgent.py:50075:False F:\whty\whty

--->解决:

版本兼容问题,可以做如下设置解决。


问题3:执行报错

\xb2\xe2\xca\xd4\xd3\xc3\xc0\xfd2 | FAIL |

WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

--->解决:

因为webdriver没有放入path,如果是crome浏览器,需要先下载浏览器驱动geckodriver,将下载的geckodriver放到火狐浏览器的执行目录下

然后把这个地址加入环境变量path。或者把geckodriver放入python的安装目录根目录下也可。

geckodriver下载地址:https://github.com/mozilla/geckodriver/releases

下载geckodriver.exe 地址:https://github.com/mozilla/geckodriver/releases,根据自己系统选择相应的版本

下载解压后将getckodriver.exe复制到Firefox的安装目录下,如(C:\Program Files\Mozilla Firefox),并在环境变量Path中添加路径:C:\Program Files\Mozilla Firefox;

再次运行就OK。


问题4:执行报错

[ ERROR ] Suite 'Whty' contains no tests matching name 'Whty.Test.\xb2\xe2\xca\xd4\xd3\xc3\xc0\xfd' in suite 'Whty.Test'.

Try --help for usage information.

---》解决:test  suite格式问题,可以换成robot格式即可。右键点击suite,选择change format


问题5:ride输出编码问题

ride的log输出中,出现编码错误

\xb2\xe2\xca\xd4\xd3\xc3\xc0\xfd2 | FAIL |

PermissionError: [WinError 5] \xbe\xdc\xbe\xf8\xb7\xc3\xce\xca\xa1\xa3

或者:\xb5\xbc\xc8\xeb\xb7\xd6\xc5\xe4

--->解决:Python 安装路径下修改 \Lib\site-packages\robotide\contrib\testrunner\testrunnerplugin.py 文件,将 'SYSTEM': SYSTEM_ENCODING,改成 'SYSTEM': OUTPUT_ENCODING,如下图:

因为我用的python3和ride2,用了上面的方法并没有解决问题,后来我就重新装了ride的1.7.4.2版本,导致ride无法启动,于是又重新执行了官网的指令进行安装。pip install robotframework-ride==2.0b1。如果不带==2.0b1,安装的版本号是不同的,不知道是不是这个原因导致的。重新安装后就正常了。


问题6:图形验证码获取

测试过程中,需要测试一些验证码功能,需要涉及到图形识别,要先安装Tesseract-OCR,下载exe安装;

然后pip安装pillow,pip安装pytesseract(依赖pytesseract-OCR,所以要先安装)

安装完esseract-OCR要配置环境变量

还要修改如下图文件

修改文件

修改内容:tesseract_cmd = r'D:\Program Files (x86)\Tesseract-OCR\tesseract.exe'。注意要修改到exe级别

重启电脑


问题7:关于自定义包引用问题

1、在site-pakages下面新增NewLibrary文件夹,内部文件如下

其中_init_.py是必须的,可以为空文件。

然后ride引用

引用截图

不知为何,直接引用NewLibrary是不行的。还不知原因。

另外需要配置NewLibrary这个目录为环境变量

问题8:识别验证码,且带干扰线

可以参考如下链接解决,本人未尝试

https://blog.csdn.net/weixin_40267472/article/details/81384624

问题9:安装autoitlibrary报错command errored out with exit status1:

在用pip安装autoitlibrary的过程中,出现如下报错。

百度了后,说是需要用管理员身份执行,所以需要下载下来进行安装。

下载autoitlibrary、autoit

autoit下载地址:https://www.autoitscript.com/site/autoit/downloads/,版本最新是1.1

autoitlibrary下载地址(官网):http://www.softpedia.com/get/Programming/Components-Libraries/AutoItLibrary.shtml

autoitlibrary下载后解压到某个文件夹,然后用管理员身份执行命令行。我是放在D:\Python38\AutoItLibrary-1.1这个路径下。

安装过程中会有一些语法报错,需要修改一下autoitlibrary的代码,因为它支持的应该是python2

修改文件:D:\Python38\AutoItLibrary-1.1\setup.py

修改print为print():

修改“raise Exception, "Failed to run %s" % cmd”为“raise Exception("Failed to run %s" % cmd)”:

将exception和print的都加上括号

_init_.py文件里面的exception

logger.py文件里面的print

然后用管理员身份执行cmd

执行如下命令

因为autoitlibrary依赖autoit,所以还要下载autoit后安装,记住安装的时候要选择64bit的

可是安装后,ride里面导入autoitlibrary还是红色。mygod,路漫漫其修远兮。。。

继续查查查,先看报错

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "D:\Python38\lib\site-packages\AutoItLibrary\__init__.py", line 30, in <module>

    import Logger

ModuleNotFoundError: No module named 'Logger'

------提示找不到模块,查了下,python3的语法和python2是不同的,模块的调用也不同,找到一个说法说模块前面要加_,试试还是不对

>>> import AutoItLibrary

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "D:\Python38\lib\site-packages\AutoItLibrary\__init__.py", line 30, in <module>

    import _Logger

ModuleNotFoundError: No module named '_Logger'

然后继续找差异,百度上找到下面这个说法

其他语法差异参考链接:https://www.cnblogs.com/davidwang456/p/7493795.html

按照这个说法,改了一下D:\Python38\Lib\site-packages\AutoItLibrary\__init__.py文件的代码

将 import Logger和 import Counter

改为:

from . import Logger

from . import Counter

先在cmd里面执行python的importAutoItLibrary,试试,如下:

>>> import AutoItLibrary

>>>

没有报错,说明成功啦!!!哈哈哈哈哈开心。

可是,,,,去ride里面导入。omg,我 要死了

继续攻克。。。。

利用cmd(且需要用管理员身份进入否则会报0x80070005代码错误,注册失败)进入AutoItX3.dll文件所在路径,运行系统注销和系统注册命令:

c:\Python27\Lib\site-packages\AutoItLibrary\lib>regsvr32 /u AutoItX3.dll

c:\Python27\Lib\site-packages\AutoItLibrary\lib>regsvr32 /s AutoItX3.dll

终于成功,欢天喜地,喜极而泣,折腾了一个上午:

问题10:autoitlibrary中途突然部分关键字不可用

在某天安装了appiumlibrary后,发现和seleniumlibrary的关键字有冲突,于是删除了appiumlibrary

但是第二天autoitlibrary中的部分关键字也消失了,只能看到8-9个可用关键字。

--->解决:

F5查询AUTOITLIBRARY的关键字,只有几个了。缺少了很多关键字。为啥捏?

搞不懂。于是删除了autoitlibrary。然后重新导入,还是不行。

继续度娘啊。度娘也没找到好的办法。

于是又重新安装了一次autoitlibray,重新反注册和注册一次。就好了。

原因未知。

上一篇下一篇

猜你喜欢

热点阅读