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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 框架介绍1、HttpRunner是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。2、LocustLocust是一款易于使用的分布式用户负载测试工具。它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户。HttpRunner 通过复用Locust ,可以在无需对 YAML/JSON 进行任何修改的情况下,直接运行性能测试。3、 httprunner使用手册附httprunner中文使用文档地址:cn.httprunner.org/环境安装安装httprunner: ...
            2 3 2111
            分享
          • 往往在测试中,大家觉得来了测试任务就测试,时间久了,反而忘记了还有什么规范?也就慢慢忽略了规范!规范的软件测试流程有助于需求条理化,将测试工作模块化,一切跟着计划走比通过脑袋记忆要更加的有条理。有的时候,工作任务比较繁琐,脑袋记忆力容易出现乱成一锅粥的情况,特别这个时候,软件测试计划就更加重要。下面结合实际情况对自己工作中测试流程进行简单的阐述。1.制定测试策略测试策略就是如何进行测试,运用何种手段进行测试。当用户提出新的需求时,测试人员应该和开发人员一起做测试需求分析,一般我们都会通过会议的形式去进行讨论分析,这样测试人员会对测试需求要有个大概的了解,需要是干什么的,包括哪些功能等等,而不至...
            0 0 1779
            分享
          •   据报道,苹果周四成功说服美国一家上诉法院维持专利法院的判决。苹果原本有可能要向专利授权公司VirnetX支付5.02亿美元侵权赔偿,而这一最新判决有可能推翻此前的赔偿决定。  美国联邦巡回上诉法院确认了美国专利和商标局的裁定,认为VirnetX指控苹果侵犯的两项专利无效。  VirnetXCEO肯达尔·拉森在声明中表示,该公司对这项裁决感到失望,并考虑重新申请听证会,或者上诉到美国最高法院。  本案宣判后,VirnetX股价在周四纽交所常规交易中下跌超过14%。但在本案宣判前,该股早盘一度涨超55%,原因是该公司宣布将派发特别股息,并预计未来可能因为苹果案获益。  苹果发言人尚未对此置评。...
            0 0 552
            分享
          • 现在PC端的产品越来越多,产品发展也是越来越成熟,我们测试部门关于这些产品的验收也是有一套对应的标准的,按道理来说,这种通用规则是值得买一个开发遵守的,这样更加符合产品风格一致化和易用性。详细的方向和规则如下面阐述的:【易用性】1、删除有二次弹框,二次弹框的引导内容正确;2、新功能用户指导内容准确及时;3、按钮的位置(取消在左,确定在右)间距和字符大小合适;4、图标的使用,问号代表功能说明,感叹号代表错误警告,箭头代表展开和收起;5、导航栏滑点滑动,页面内容可以跟随;6、页面内容超长,toast内容始终显示在屏幕中间;7、页面刷新频率恰好,不会太频繁;8、进度颜色标识区分明显,正常进度绿色,超...
            1 1 9114
            分享
          • 用Jmeter实现dubbo接口测试的文章,网上可以找到很多,但是只看不练假把式。废话不多说,直接上干货。写这篇文章的过程也是自己不断学习的过程。一、准备(1)自行下载安装zookeeper-3.4.6(这里的版本是我用的,可以自行下载自己喜好的版本)(2)自行下载apache-jmeter-3.1,这是免安装的,解压后\Jmeter\apache-jmeter-3.1\bin目录下执行jmeter.bat即可启动。(3)开发环境STS(即Spring Tool Suite)(4)dubbo-admin-2.4.1(这个是非必须的,主要是为了查看Dubbo的服务提供者和消费者) 二、...
            4 4 3063
            分享
      • 51testing软件测试圈微信