首页 > 其他分享 >二十一条自动化测试过程中遭遇的问题及解决思路

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

时间:2023-05-16 19:02:51浏览次数:35  
标签:__ 二十一条 self 元素 driver 测试 自动化 txt 页面


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

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

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,解决问题)

  

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

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

  

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

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

开源优测

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

二十一条自动化测试过程中遭遇的问题及解决思路_软件测试_04

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

 

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

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

  

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

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

 

标签:__,二十一条,self,元素,driver,测试,自动化,txt,页面
From: https://blog.51cto.com/deeptest/6286458

相关文章

  • [重磅消息]AutoMagic自动化测试平台开源
    作者介绍:网名:Ray 2018年3月29日,Ray跟我说准备把AutoMagic自动化测试管理平台开源了!!!这是个好消息,因为AutoMagic在其所在的企业中实践应用,沉淀了自动化测试设计的基础理念的落地,对于平台很多细节我和Ray也曾反复讨论打磨。因此对于要从事自动化测试平台开发的测试人员来讲有很多值......
  • 软件测试人员必须了解的DevOps
    软件测试人员必须了解的DevOps前言什么是DevOps工作原则方法如何着手DevOps变更流程管理技巧挑战总结参考前言对很多软件测试人员而言,可能尚未接触到DevOps,本文的内容基于笔者日常学习,针对测试人员所记录的一些关键信息,算是给大家深入学习DevOps的一个引子。什么是DevOpsDevOps是开......
  • ETL测试工具和面试常见的问题及答案
     概述        商业信息和数据对于任何一个企业而言都是至关重要的。现在很多公司都投入了大量的人力、资金和时间对这些信息、数据进行分析和整理。数据的分析和整理已经获得了巨大的潜在市场,因此为了使得这个过程更为简单,越来越多的软件供应商引入了ETL测试工具。目前,有......
  • AutoLink开源自动化测试集成解决方案
    项目地址:https://github.com/small99/AutoLink介绍AutoLink开源自动化测试集成解决方案.AutoLink是RobotFramework的web集成开发环境.AutoLink支持RobotFramework语法高亮,自动提示等功能.AutoLink可以帮助你轻易的构建web自动化测试脚本、HTTP接口自动化测试脚本以及移动自动化测试......
  • Robot Framework | 02 从抛弃RIDE开始创建你的RFS测试
    概述        大多数情况下,我们用RobotFramework时,一般基于其图形界面的RIDE来编辑、管理、执行用例。今天我们分享下基于非编辑器模式的RobotFramework关键字自动化测试。目标我们实现以下功能:启动浏览器访问百度输入"开源优测",单击"百度一下"按钮关闭浏览器输出报告准备......
  • 一篇文章让你入门API测试
     什么是APIAPI是ApplicationProgrammingInterface的简写。实现了两个或多个独立系统或模块间的通信和数据交换能力。什么是API测试API测试是不同于UI级自动化测试,其主要关注在系统架构的业务逻辑层,所以其主要关注不在于UI操作或用户感观上,更重调用逻辑关系。与UI级自动化测试通......
  • 从龙套到跑路:自动化测试入门
     目标首先要定义自动化测试的目标是什么?在笔者的企业实践中,给自动化测试明确了两个目标:主动或被动方式触发主业务流全流程覆盖验证(应用于大规模持续集成验证)能够与日常手工业务测试协作交互(提升手工业务测试过程效率)基础要进行自动化测试实践,需要必备哪些技术功底呢?下面我们一起看......
  • 4年经验面试要15K,一问自动化却以为我在刁难他?
    金3银4黄金期,我们公司也开始大量招人了,我这次是公司招聘的面试官之一,主要负责一些技术上的考核,这段时间还真让我碰到了不少奇葩求职者昨天公司的HR小席刚跟我吐槽:这个星期没有哪天不加班的!各种招聘网站上的消息源源不断,连吃饭都要回消息……看来最近大家跳槽的心都很活跃。之前......
  • hibernate 批量插入的测试 转
    Hibernate批量插入的测试:最近在项目中做了一个充值卡的模块,用到了批量插入:我一开始用hibernate插入五十万条数据:选说一下我的记算机配置:内存:1G,CPU:Pentium(R)4CPU3.20GHz.配置应该算是过时的了,我的数据库是:oracle10G,数据库服务器在外地,我测试插入到十万条的时候用了二十五分......
  • 软件测试系列-全景图
    0. 软件测试全景图1. 测试定义2. 测试流派3. 测试方法4. 测试层次/类型5. 测试方式6. 测试技术7. 测试过程8.测试管理......