• 11
  • 11
分享
  • 软件自动化测试过程中遭遇的问题及解决思路——软件测试圈
  • TIMI 2022-01-06 10:28:50 字数 2739 阅读 4269 收藏 11

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

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

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

  • 元素的标签不唯一,默认找到第一个;

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

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

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

  • 检查元素属性是否是会变动的、是否是隐藏的;

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

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

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

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

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

2、出现“object is not iterable”:

  • 首先查看脚本,测试用例出现问题;

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

1.jpg

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

2.jpg

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

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

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

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

  • sys.path.append(“..”);

  • from .... import ...

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

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

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

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

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

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

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

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

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”)两个

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

  def __init__(self,driver):
    Logger.__init__(self,’OA’)
    self.log=self.getlog()
    self.driver=driver

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

  • 首先引入os模块:import os

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

  • 改名: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后面多加了一对括号”,取消就好了)

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

3.jpg

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


作者:竹 叶

原文链接:https://blog.csdn.net/zhusongziye/article/details/79780336

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 最近想研究下手机端是如何进行接口测试的,那就得先把app和微信小程序的一些测试的重点会了解,我没有做过关于微信小程序和手机app的测试,有不对的希望补充和提建议,下面是我在网上找到的一些知识的总结:功能测试:功能测试和web的测试逻辑一样,主要是理解项目的需求设计等,查看功能模块、业务流程、同一功能不同入口时有效性检查、页面交互性检查、输入输出等逻辑进行测试;权限:app是否可以访问手机通讯录、相册、相机等权限;小程序是否有微信授权,未授权/授权登录程序,同一微信号不同手机登录查看数据显示情况;兼容性测试:不同手机操作系统检验、不同微信版本(测试当前微信版本发布的项目和升级版微信后测项目)、分...
            0 0 1103
            分享
          •       Prometheus      配置说明      在istio网格中,每个组件都会暴露一个提供metrics的endpoint。Prometheus可以从这些endpoints上抓取metrics(通过Prometheus配置文件来设置scraping,端口以及TLS等)。      为了采集整个网格的metrics,需要配置Prometheus scraping组件:控制面(istiod deployment)ingress和eg...
            0 0 1791
            分享
          • 免费的开源框架和工具由于其开源特性,现在逐渐成为自动化测试的首选解决方案。 区别在于,你是喜欢使用类库编写一个全新的自动化测试框架,或者喜欢使用一个现成的工具。本文帮忙你快速了解 10 大免费和开源测试工具、框架。Katalon StudioKatalon-StudioKatalon Studio 是一款流行的免费测试自动化工具,适用于 Web、移动、API和桌面(Windows)。Katalon Studio 提供低代码和脚本方法,消除了构建和维护单独测试框架的培训成本。借助强大的内置功能,用户可以直接专注于测试活动,而在创建、运行和维护测试上花费更少的精力。支持的编程语言:Java 和 G...
            0 0 1085
            分享
          • 软件测试职业发展方向,大体上可以分为管理路线、技术路线、管理+技术路线。软件测试,是技术主导的职业;不管选择哪条发展路线,都是需要一定的技术沉淀,只是相对来说,管理路线对技术方面要求不高而已。那么我们就先挑重头的技术路线展开讨论。一般来说,一个普通的测试工程师刚入行,3个月左右熟悉企业的工作流程和模式,那么今后的工作内容趋于平稳。然而社会是残酷的!如果单单停留在测试工程师的阶段,若干年后,相信你再也竞争不过那个时候的应届毕业生,当你的工作技能和职业素质趋于与那些朝气蓬勃的年轻人相当时,企业会毫不留情的选择他们,而release你,因为你的成本消耗要比他们高,这是大实话!然而现实又是公平的!因为...
            15 15 1283
            分享
          • 1 引言1.1 编写目的编写该测试总结报告主要有以下几个目的:通过对测试结果的分析,得到对软件质量的评价;分析测试的过程,产品,资源,信息,为以后制定测试计划提供参考;评估测试测试执行和测试计划是否符合;分析系统存在的缺陷,为修复和预防bug提供建议。1.2 背景1.3 用户群主要读者:XX项目管理人员,XX项目测试经理其他读者:XX项目相关人员。1.4 定义严重bug:出现以下缺陷,测试定义为严重bugü 系统无响应,处于死机状态,需要其他人工修复系统才可复原;ü 点击某个菜单后出现“The page cannot be displayed”或者返回异常错误;ü 进行某个操作(增加、修改、删...
            11 11 2520
            分享
      • 51testing软件测试圈微信