记录自动化中遇到的一些错误及解决思路,会持续更新(根据个人情况不同,错误解决方法不同)

1、找不到元素,脚本报“NoSuchElementException:Unable to find element”,或者"定位到了,不能操作,点击无效"

  1) 首先查看自己的“属性值”是否写正确

  2) 元素的标签不唯一,默认找到第一个

  3)向上查看,元素是否在frame或iframe框架中

  4) 查看元素是否在新打开的页面中,需要切换到新窗口

  5) 换其它的定位方式:id/name/class name/tag name/link text/xpath/css selector

  6) 检查元素属性是否是会变动的、是否是隐藏的

  7)添加等待时间sleep(),implicitly_wait(),WebDriverWait(driver, 10, 1).until(定位的元素, messages)

  8) 查看标签的属性是否有“style=’display:none’->。元素不显示。属性改为block

  9) 查看标签的属性是否有‘οnclick=return false’->。取消点击。属性改为false(在百度首页,登陆的属性就是这个)

  10) 针对于9和8这两种情况,我在网上搜到的结果是:执行js修改属性(这种方法我没有试过,不知道有没有效果)

  js=”document.getElementById(‘title‘).style.display=’block’”

  driver.execute_script(js)

2、出现“object is not iterable”:

  1) 首先查看脚本,测试用例出现问题

  2) 组织用例时出现错误(我开始是用for循环遍历y,加入测试集合中,返回集合,老是会出现错误,最后改成下方代码,直接返回y,解决问题)

  

3、出现“Indentation Error”: 是语法问题,脚本代码没有正确对齐

4、使用PO设计模式封装的页面元素类,都有初始化函数“__init__”

5、页面元素调用Page类时候,Page函数,后面括号的“self”不用写

6、Page的初始化包含(self,driver)两个元素,在页面封装类中,初始化中调用方式为

Page.__init__(self,driver)

7、类中定义变量,比如x=“hello”,调用使用:self.x

8、在测试用例调用自己页面封装的类时,经过实例化后po=Lzsp(driver),定义函数时候, 不需要再括号中写self

  

9、提示在页面封装类中没有basePage.py文件中定义好的函数问题:

  1) 新建名字为module_basePage.pth文件,内容为“basePage.py文件”存放路径:例如(“d:\\test\\page”)

  2) 进入python的安装目录,将文件放到python3\lib\sit-packages文件夹下

  3) 在测试用例中导入其他文件夹模块引入:import sys

  4) sys.path.append(“..”)

  5) from .... import ...

10、页面元素封装时候,定位方式一定要写正确,否则会出错

11、进行参数化的时候,读取数据的文件里面代码:“使用绝对地址,加双斜线”

12、运行自动化脚本时候将鼠标放到屏幕中间或者下方,(有可能切换窗口时定位不到)

13、出现”parater must be str“:使用参数有问题,(我的是因为二次定位写的方式有问题)

  1) 在封装页面元素定位方式时,经常会会遇到二次定位

  2) 第一次定位调用基础类的方法,第二次定位就正常写就行了,例子如下:

  3) 我是使用:x=self.find_element(locator).find_element_by_id(locator)

  4) 因为我在页面封装中将把定位方式和元素都放到列表中,第二次的元素不写定位方式,只写元素

14、在window命令界面下使用:”python 文件名.py >>report/log.txt 2>&1”命令把结果写入文本中

15、在页面封装中,类的初始化使用如下样式:

  def __init__(self,driver):

    Page.__init__(self,driver)

16、打印输出时显示“not all arguments curerted during string format”是说明前后参数不对应:%前面是一个“%s”,而后面的参数是(“xy”,“xy”)两个

开源优测

分享软件测试开源技术、经验、方案的首发平台

长按二维码/微信扫描 关注开源优测

苦叶子个人微信:liyimin1912

有问题,可留言或加好友进微信群

17、同一个模块中的两个类,第二个调用第一个类的方法,直接使用“继承”,2继承1,

  def __init__(self,driver):

    Logger.__init__(self,’OA’)

    self.log=self.getlog()

    self.driver=driver

18、Python对文件进行“复制”和“改名”

  1) 首先引入os模块:import os

  2) 复制:os.system(“copy 文件名.txt 新文件名.txt”)

  3) 改名:os.rename(“文件名.txt”,”新文件名.txt”

19、读取txt文件中的汉字和字符打印却是一串编码,像这种:(b'\xef\xbb\xbf\xe5\xa5\xbd\xe7\x9a\x84\r\n')

  解决代码如下:

  x=open(“2.txt”,”rb”)

  y=x.readlines()

  for i in y:

    j=i.decode(‘utf-8’)  :在原有代码增加一句

    Print (j)

  x.close()

20、出现“str object is not callable”的问题

  原因是:使用定义的变量名字与内置模块名字相同,(我的原因是:在basePage.py文件中,“得到文本的函数,element.txt后面多加了一对括号”,取消就好了)

  针对自己的脚本,检查变量的名字,相同的更改一下,

  

21、在编写自动化用例中,会打开多个窗口,经常会遇到,第一次得到的句柄列表为a=[1,2],第二次得到的句柄列表是b=[1,3,2],偶尔不会

  按照顺序排序(一般都是按顺序排的),要切换到句柄3,

  可以使用如下方法得到句柄3:

  c=list(set(b)-set(a))=[3]    :先把a和b变成集合,再取b不同于a的元素

  最后再转换为列表赋值给变量c

  driver.switch_to.window(c[0])   :切换到新窗口c

作者: qupan

博客地址:http://www.cnblogs.com/qupan/

声明:本文已获作者授权转载,著作权归作者所有。

二十一条自动化测试过程中遭遇的问题及解决思路相关推荐

  1. 股票 江恩二十一条买卖法则

    江恩的这二十一条交易守则,应该很多读者都应该读过,为什么这时候重提呢?因为这些守则可以帮助投资者控制风险,保持最大的利润.我每次阅读,都会有新的看法和体验.希望读者不要只当是一般守则來处理,有时间不妨 ...

  2. 重发老文:DOS游戏编程二十一条

    这是我1999年写的一篇文章了,应该说,经过了这么多年的进步,文中很多与DOS相关的内容,现在看起来已经不合时宜了,不过,我认为里面的一些理念,到任何时候都不会过时. 最近看到tr110223网友的& ...

  3. 股民必须牢记的二十一条军规

    "二十一条军规"是美国西点军校的校训,每一个进入西点的军人,要像背<圣经>一样熟背校训.在这一校训下,西点成为世界上荣耀至高无上的军校.下面我们来看看西点浓缩的二十一条 ...

  4. 【SQL开发实战技巧】系列(二十一):数据仓库中时间类型操作(进阶)识别重叠的日期范围,按指定10分钟时间间隔汇总数据

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  5. Tom Morgan | 人生二十一条法则

    最佳的认知状态是在头脑的理性期望和身体接受的感官信号之间达成平衡. ​​前言: 我的线上导师汤姆·摩根(Tom Morgan)将过去几年撰写的邮件订阅和播客采访集结一体,发表了<21 Usefu ...

  6. 自动化测试遇到的难点_自动化测试过程中遇到的问题主要有什么?

    1 自动化测试过程中遇到的问题主要有什 么? 问题:自动化测试过程中遇到的问题主要有什么? 回答: 1. 对自动化测试的期望值太高.很多人想把自动化测试完全替 代人工测试, 如果期望不现实, 无论测试 ...

  7. SQL Server数据库开发的二十一条军规

    如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS). 在 ...

  8. 测试过程中常见的中间件及测试思路

    1.中间件是什么 中间件(英语:Middleware)顾名思义是系统软件和用户应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,是一种独立的系统软件或服务程序 ...

  9. Table 组件构建过程中遇到的问题与解决思路

    在 GearCase 开源项目构建 Table 组件的过程中.遇到了各式各样的问题,最后尝试了各种方法去解决这些问题. 遇到的部分问题 checkbox 的全选和半选问题 table 组件的排序请求方 ...

  10. 《JavaScript高级程序设计》阅读笔记(二十一):JavaScript中的XML

    虽然XML和DOM已经变成Web开发的重要组成部分,但目前仅IE跟Mozilla支持客户端的XML处理. 一.IE中的XML DOM支持 IE对XML的支持是基于ActiveX的MSXML库. 1.D ...

最新文章

  1. Eclipse新建工程编译R cannot be resolved to a variable问题
  2. spring教程--事务管理
  3. DCMTK:压缩DICOM文件
  4. Data intensive Application (1)
  5. [HTTP] HTTP是什么
  6. Java中List与数组互相转换
  7. java面试题 接口和抽象类的区别是什么
  8. Spark 广播变量BroadCast
  9. LNMP 1.2 Nginx编译安装
  10. 嵌入式工具——lsof
  11. InfoGAN学习笔记
  12. 网络安全学习相关网站
  13. 查看电脑的admin的密码
  14. 合法免费下载电子书的站点整理收藏
  15. 平面设计是什么?学会平面设计可以从事什么工作?
  16. 指数分布的期望与方差
  17. db2 系统临时表空间
  18. python卡方检验计算pvalue值_如何用python计算临界值(critical value)和p值(p value)(scipy)...
  19. pythonGUI实现照片或证件照迅速更换自定义背景底色
  20. 谷歌发现育碧uPlay安全漏洞

热门文章

  1. 在腾讯待了 9 年还离了职
  2. [BZOJ4816][Sdoi2017]数字表格 数学
  3. 麻将胡牌算法(C++版)
  4. 计算机怎么审单流程,电子审单
  5. 【错误率、精度、查准率、查全率和F1度量】详细介绍
  6. 一些高薪职位的能力需求。
  7. mac上解决Resource temporarily unavailable
  8. 一级域名、二级域名 cookie
  9. 打造有身体的 AI丨记青源Workshop具身智能与机器人研讨会(2022年第8期)
  10. C/C++编程学习 - 第3周 ⑥ 温度表达转化