web自动化测试十大问题+解决方法汇总,一篇概全...

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、启动浏览器报错

报错信息:Exception in thread “main” org.openqa.selenium.WebDriverException: unknown error: call function result missing ‘value’

出现以上报错信息,是由于浏览器版本与driver版本不匹配,各版本driver下载地址为:https://npm.taobao.org/mirrors/chromedriver;

在进行UI测试之前,一定要先检查自己浏览器的版本,然后找到对应版本的driver,这样才能正常启动浏览器进行测试。

2、无匹配元素/元素不可见

报错信息为:ValueError: Element locator ‘id=msgCount’ did not match any elements.

首先,确认是否设置了合理的等待时间,在web的UI测试过程中,我们需要等待元素加载完成之后,才可以定位到对应的元素;

其次,如果设置等待时间仍然无法解决问题,再检查定位方式是否准确,并切换不同的方式进行元素定位,常用的元素定位方法包括id、name、className、partialLinkText()、linkText、xpath、cssSelector();

一般情况下,出现无法定位或者找不到元素的情况,都是由于没有设置合理的等待时间。

3、设置等待时间

为了提高测试脚本的稳定性和实用性,设置合理的等待时间是必不可少的,我们需要根据不同的场景,选择合适的等待方式,以提高测试效率;

常用的等待方式包括强制等待、隐式等待和显式等待三种。

强制等待:time.sleep(x),在查找元素前强制线程停止x秒,由于这种等待方式是必须等够x秒之后,才执行对应的操作,因此可能会影响测试效率,一般不建议使用;

隐式等待:隐式等待是对网页加载的等待;

在整个测试用例编写过程中,只需强调一次,之后每次出现网页加载都执行一次等待,自动判断等待时间;

在启动浏览器后,加一个driver.implicitly_wait(5)即可;其中,参数5表示,页面在0-5s内加载出来即可,是一个时间范围;

显式等待:显式等待是对元素的等待;在每次进行元素查找之前都需要强调一次:

WebDriverWait(driver,20,0.5).until(expected_conditions.alert_is_present())

其中,20s表示最大等待时间,0.5s表示轮询时间间隔;检查到元素即停止等待,执行下一个操作;

4、上传文件

Web的UI自动化测试过程中,我们不可避免要处理文件上传,最简单的方式是通过sendkeys来处理,这种方式简单、清晰、高效,是处理文件上传的首选。

代码如下:

driver.find_element(By.ID,'upload').send_keys('D:/upload.txt')

但是这种方式只适用于元素标签为input类型的上传,webdriver的API无法处理上传文件时系统的对话框;

此时,我们可以采用AutoIT v3进行处理,AutoIT脚本编译成可执行文件exe后,放到本地的某一个目录下供程序调用,调用方法如下:

Runtime rn=Runtime.getRuntime();Rn.exec(“upload.exe”)

AutoIT是一个类似脚本语言的软件,利用此软件我们可以方便的实现模拟键盘、鼠标、窗口等操作,实现自动化。

5、切换浏览器窗口

在进行UI自动化测试过程中,我们通过链接打开一个新的页面时,需要进行窗口切换,才能在新页面进行操作。

6、定位Webdriver定位class属性中有空格的值

例如:定位" class=“bg s_btn”,一共有三种处理方式:

self.browser.find_element_by_class_name("s_btn").submit()   #第一种解决办法:class值取其中之一self.browser.find_element_by_class_name("bg").submit()   #第二种解决办法:class值取其中之一self.browser.find_element_by_css_selector(".bg.s_btn").submit()  #第三种解决办法:使用css.selector,每个class值前面加.

其中,在使用前两种方法的时候,需要确认我们选取的元素不会在该页面上存在重复,因此建议使用css.selector方式进行定位,以保证元素查找的唯一性。

7、处理页面弹出框Alert

Alert是JavaScript控件,无法通过元素定位的方式进行处理,Webdriver提供了以下方式来对控件进行处理:

driver.switch_to.alert.accept()   # 通过accept,关闭弹出框driver.switch_to.alert.dismiss()  # 通过dismiss,关闭弹出框driver.switch_to.alert.text   #获取弹出框文字

8、日历控件

日历控件是一种特殊的网页元素,由于其操作的复杂性,我们无法通过模拟手工操作来进行一步步的选择。

检查页面元素可以发现,日历控件属于input类型,但是由于其readonly属性,无法使用send_keys直接输入;

因此,我们可以通过调用JavaScript脚本(打开Chrome浏览器-右键点击检查-进入console,即可进行JavaScript代码调试),先删除其readonly属性,再使用sendkeys方式进行输入。

代码如下:

driver.execute_script('document.getElementById("date").removeAttribute("readonly")')

9、处理图片验证码

在进行登录注册等操作时,我们经常需要处理一些验证码;

除了通过万能码进行登录之外,我们还可以调用百度提供的开放接口进行验证码处理,接口说明文档如下:

http://ai.baidu.com/docs#/OCR-API/top

10、iframe或frame处理

在元素定位过程中,如果出现了或者<iframe>标签,说明该页面中嵌套了一个新的页面,该页面内的元素无法直接定位。

因此,在定位新页面元素之前,我们需要先执行driver.switch_to.frame()方法,切换到该frame下面,再对该frame下的元素进行定位和操作;

如果想操作该frame以外的元素,可以通过driver.switch_to.parent_frame()方法切换到上一级frame。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

不要因为别人的否定或嘲笑而放弃自己的梦想,他们只是不了解你有多大的潜力。你要坚信自己,用实际行动证明自己的价值。

生活不会一帆风顺,但只要你不放弃,坚持下去,你就会发现那些艰难的日子最终都会变成最美的回忆。

人生就像一场马拉松,不在乎你跑得多快,而在乎你能坚持多久。只有当你抵达终点时,你才会明白这一路上的艰辛和喜悦有多么值得。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/205786.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动能方案 | 15693协议的读卡器应用 DP1363F 替代RC663

15693协议是一种高频&#xff08;13.56 MHz&#xff09;射频识别&#xff08;RFID&#xff09;协议&#xff0c;广泛满足无线识别和数据传输领域。其特点包括较远的读取范围、支持快速数据传输、与多个标签的兼容等&#xff0c;产生于不同行业有着广泛的应用&#xff0c;包括但…

Java异常处理机制

Java异常处理机制 一、异常概述与异常体系结构异常概述Error示例代码&#xff1a;Exception示例代码&#xff1a;异常体系结构Error和Exception的区别:异常分类检查异常非检查异常Why:为什么有非检查异常&#xff1f;Where:非检查异常有哪些&#xff1f;Exception异常划分运行时…

『亚马逊云科技产品测评』活动征文|通过Lightsail搭建个人笔记

提示&#xff1a;授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 文章目录 前言实践知识储备Lightsail介绍Leanote介绍实践…

18张值得收藏的高清卫星影像

这里分享的18张高清卫星影像&#xff0c;由吉林一号卫星拍摄。 原图来自长光卫星嘉宾在直播中分享的PPT演示文档。 18张高清卫星影像 吉林一号高分04A星&#xff0c;于2022年05月21日拍摄的北京紫禁城高清卫星影像。 北京紫禁城 云南昆明滇池国际会展中心高清卫星影像&…

vr小鼠虚拟解剖实验教学平台减少了受感染风险

家畜解剖实验教学是培养畜牧兽医专业学生实际操作能力的专业教学活动中的核心手段。采取新型教学方式与手段&#xff0c;合理设置实验教学内容&#xff0c;有助于激发学生的操作积极性&#xff0c;促进实践教学的改革。 家畜解剖VR仿真教学是一种借助VR虚拟现实制作和web3d开发…

【Java】智慧工地管理系统源代码,支持二次开发,SaaS模式

智慧工地系统围绕工程现场人、机、料、法、环及施工过程中质量、安全、进度、成本等各项数据满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效。 一、行业现状 1、施工现场管理难&#xff1a;安全事故频发&#xff0c;人工巡检难度大&#xff0c;质量进度协同难等…

52.seata分布式事务

目录 1.事务的四大特性。 2.分布式服务的事务问题。 3.seata。 3.1理论基础。 3.1.1CAP定理。 3.1.2BASE理论。 3.2初识Seata。 3.2.1Seata的架构。 3.2.2部署TC服务。 3.2.3微服务集成Seata。 3.3 seata提供的四种分布式事务解决方案。 3.3.1 XA模式。 3.3.1.1 X…

全国第一届学生(青年)运动会女子拳击比赛60公斤冠军载誉归来

11月16日&#xff0c;参加全国第一届学生&#xff08;青年&#xff09;运动会女子拳击比赛60公斤冠军阿依古再丽麦合苏提抵达和田。 中华人民共和国第一届学生&#xff08;青年&#xff09;运动会拳击比赛11月12日在广西贺州市钟山县体育馆落下帷幕&#xff0c;本届比赛新疆拳击…

原始类型 vs. 对象(基本类型 vs. 引用类型)

原始类型 首先我们先看一段代码&#xff1a; let age 30; let oldAge age; age 31; console.log(age); console.log(oldAge);在 JavaScript 中&#xff0c;原始类型的赋值是通过值复制的方式进行的&#xff0c;而不会相互影响。只有对象类型的值才是通过引用复制的方式进行…

服务案例|故障频发的一周,居然睡得更香!

医院运维有多忙&#xff1f; 医院运维&#xff0c;听起来平平无奇毫不惊艳&#xff0c;但其中的含金量&#xff0c;可不是“维持系统正常运行”就能总结的。毕竟医院对业务连续性的超高要求&#xff0c;让运维面对的问题都是暂时的&#xff0c;下一秒可能就有新问题需要发现解…

Vue3 快速上手-基于Vue2基础

Vue3 快速上手-基于Vue2基础 前言Vue3快速上手1.Vue3简介2.Vue3带来了什么1.性能的提升2.源码的升级3.拥抱TypeScript4.新的特性 一、创建Vue3.0工程1.使用 vue-cli 创建2.使用 vite 创建 二、常用 Composition API1.拉开序幕的setup2.ref函数3.reactive函数4.Vue3.0中的响应式…

禁止安装新软件怎么设置(超详细图文介绍)

很多公司的网管向我们反应&#xff0c;总是有员工随意下载软件&#xff0c;并且不去正规网站、正规官网下载&#xff0c;导致公司的电脑总是又卡又慢&#xff0c;网管的工作很难开展。 此时就需要对公司安装软件的情况&#xff0c;进行统一管控了。 方法一&#xff1a;适合个人…