Robot framework web自动化测试遇到的常见问题和解决方法汇总

上一篇 / 下一篇  2017-07-18 14:09:21 / 个人分类:自动测试工具

Q1:执行脚本时报“Element can not be clickable on point(25,100)”?
答:这个原因是元素被遮挡,无法看到,需要滚动滑动条使元素可见,即可操作。对于页面主体部分滑动可以使用javascript命令:javascript.:window.scrollBy(250,1300);对于左导航栏部分滑动可以使用javascript命令:jquery=$(".滑动条class").offset( {top:-400,left:0})

Q2:excel数据文件编辑后保存报共享冲突是什么原因?
答:是由于RF真正允许脚本占用了excel进程导致,手工杀死pythonw.exe进程即可解决;

Q3:执行脚本时报“local variable 'cellValue' referenced before assignment”,怎么解决?
答:这个是因为excelLibrary关键字缺少了参数引起的,目前比较多的是“获取表单单个值”关键字缺少了&{ii}参数。还有就是用例中参数传的单元格值不正确,例如本来B2有值,传的是B3单元格(空);

Q4:脚本执行未通过,经排查locator(id,name,xpath)都没有问题,但执行时就是无法操作上对象?
答:原因一:页面中是否存在iframe;如果有iframe需要先用Select Frame关键字,如果切换了页面,页面iframe不同时,需要unselect frame然后在选择新的iframe. 注意:unselect frame是跳出所有的iframe.
原因二:用locatord在页面上定位到了多个相同的对象,导致无法对期望的对象进行操作;例如id=bankName存在多个对象,需要明确操作的是那个对象,则用(//*[@id="bankName"])[x],x表示第下x+1个元素。
原因三:网络或者浏览器的原因,页面加载速度慢,页面还没有加载完,就执行操作导致无法操作成功,此时需要增加一个wait until page contain (element)等相关关键字或者wait until element is visible,保证元素加载完在操作。
备注:不要用sleep关键字,因为sleep关键字不能智能判断页面时间,脚本失败率非常高。

Q4:脚本执行后报“element is not clickable”?
答:这说明元素是不可以点击的元素,例如div元素,则需要用其他操作。

Q5:脚本执行后报“element is not visible”?
答:这个是因为元素被隐藏了、不可见。元素display属性为none。可以通过javascript先将元素设置为可见:document.getElementById("id").style.display="block"

Q6:执行查询语句在数据库中查询的结果含有中文时,显示的为乱码。
答:这个是因为数据库默认编码方式不是utf-8,需要进行代码转换,可以导入TestLibrary库,使用decode关键字进行解决。

Q7:测试用例是否可以设置多个Tag值?
答:可以

Q8:运行时, Run页面中only run tests with these tage或者skip tests with these tags下面是否可以输入多个tag?
答:可以,中间用“;”分割

Q9:执行脚本时,用get Text关键字获取元素值不是期望的值。例如 get text |xpath=/html/body/div,明明是“ABC”,获取的却是“BCD”
答:需要查看页面是否是新打开的窗口,还是在原来的窗口,如果是新打开的窗口,需要用 select window | URL选择到新的窗口中。

Q10:对于密码输入框通过安全控件实现的,脚本无法输入密码,即使可以输入密码,系统判断为没有输入,如何解决?

答:这种问题技术解决有难度,最简单的方法是让开发把密码安全控件去掉,改成普通的密码输入框;

Q11:对于登录时或者脚本执行过程中,需要输入动态验证码的怎么操作?

答:动态验证码的需要使用图像技术解决,技术上是可以解决的,但是成本太高,最简单的方法是让开发将验证码改成通用验证码,例如000000.

Q12:有时通过inputtext或者select的方式无法给控件负值成功,如何通过javascript给控件负值?

答:执行这条javascript:window.document.getEltementById('Startime').value='2016-11-12'

Q13:问题:如何处理数据库中长度不够?                         

答: 对于数据库的取值,一些FLOAT类型的数据,小数点后2位如果都为0,取出来可能只有小数点后1位,可以对取出的数据进行处理,先验证是否缺失,如果缺失补一位再return,如果不缺失则正常return

Q14:左导航栏下面的菜单遮挡,看不到需要滑动一下,怎么处理?             

答:可以使用FOCUS定位元素再选取,对于一些个别的情况可能无法适用。

Q15:怎么验证查询结果按照时间倒序排列?                                      

答:可以使用sql语句倒序排列,跟页面的结果进行比对

Q16:脚本执行时报如下错误UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-78: ordinal not in range(128),或者中文字符显示为???,如何解决?

答:首先需要判断这个错误是python的引起的还是数据库操作过程中报出的,如果是python引起的,解决办法如下:

    python27默认编码格式为ascii

1、查看python默认编码格式
importsysprintsys.getdefaultencoding()2、修改默认编码格式为utf-8且只在本次生效

        import sys

reload(sys)sys.setdefaultencoding('utf-8')

   3、永久生效

         在python27下面的site-package文件下面创建sitecustomize.py文件,将 步骤2中的内容拷贝进去,保存即可。

如果是数据库操作过程报的错,则解决办法如下: 

    1、将instantclient_11_2-64文件放到C盘下面;

    2、然后配置如下环境变量:

  1.   ORACLE_HOME = C:\instantclient_11_2
  2. TNS_ADMIN = C:\instantclient_11_2
  3. NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK

     4.Path变量,在后面添加 C:\instantclient_11_2

 

Q17:元素含有readonly属性,导致元素不可操作,如果要操作该如何处理?

     答:用js,$("aa").removeAttr("readOnly");document.getElementById(id).removeAttribute("readonly");

Q18:类似OBM,checkbox开关和radio无法勾选,执行脚本时报对象is not visible,如何解决?

        通过JS,脚本为:Execute javascript $("input[id='nosingleLimit_kuaijie']").click()

Q19:左道航栏如果被遮挡,无法点击菜单,如何处理?

       通过JS:$("span:contains(通道管理)").mouseover();$("a:contains(机构管理)").click();

Q20:上传文件部分脚本执行时,过程中不报错,但用之前的方法上传上的文件不能回显(个别电脑,销售系统进件流程)

解决办法:将上传文件 部分的脚本用另一种方式实现

Wait For Active Window 打开
Control Set Text 打开 \ Edit1 ${file}
sleep 2
Control Click \ \ Button1
sleep 2s

Q21:Robot framework如何对AJAX应用进行自动化实现?

       1、首先进入到iframe中; 2、获取输入窗体<body>元素;3、按Tab; 4、输入内容,具体实现步骤:

         Select Frame. id=ueditor_0 
         Press Key |xpath=/html/body | \\9 
          Input Text | xpath=/html/body |${客服真推消息内容1}


TAG:

 

评分:0

我来说两句

Open Toolbar