Python自动化测试面试题分享(含答案)

news2024/12/28 4:08:02

1、如果页面元素经常发生需求变化,你是如何做?

利用po模式,业务逻辑和测试逻辑相分离,当某个页面经常发生变化只需要维护页面,包括元素定位表达式,封装业务方法;不需要修改测试逻辑;

页面经常变化正是自动化测试的痛点,我们改不了需求,目前利用po模式是最有效的解决方法。

2、在你做自动化过程中,遇到了什么问题吗?举例下

a、页面经常变化,需要修改脚本
b、脚本不稳定,经常性的跑失败
c、提升效率,会影响稳定性

3、如何处理alert弹窗

先切换到弹窗:alert=driver.switch_to.alert
确认:alert.accept()
取消:alert.dismiss()
获取弹窗中文本:alert.getText()
弹窗中输入内容:alert.sendkeys()

4、在selenium中如何处理多窗口?

以百度浏览器测试:

a、获得百度浏览器的搜索页面窗口

search_window=driver.current_window_handle

b、点击“hao123”标签,跳转到hao123页面

driver.find_element_by_xpath('//a[text()="hao123"]').click()
time.sleep(2)

c、获取所有的窗口句柄

all_handles=driver.window_handles

d、切换到hao123页面

for handle in all_handles:
	if handle!=search_window:
		driver.switch_to.window(handle)
		driver.find_element_by_xpath('//a[text()="网易"]').click()

e、如果再次切换到搜索页面

driver.switch_to.window(search_window)

5、你查找元素遇到过在Frame里面吗?你是如何处理Frame里面元素定位的?

切换到frame中

def switch_frame(frame_el):
	driver.switch_to.frame(frame_el)
	el=driver.find_element_by_xpath('//input[@id="kw"]')
	el.input('kobe')
	
frame_el=driver.find_element_by_xpath('//iframe[@name="baidu"]')	
switch_frame(frame_el)

回到主页中

driver.switch_to.default_content()

6、如何处理下拉菜单?

a、通过text文本查找

def select(el):
	s=Select(el)	#初始化Select对象
	s.select_by_visible_text('kobe')
el=driver.find_element_by_xpath('//select[@id="faver"]')

b、通过value值查找

def select(el):
	s=Select(el)
	s.select_by_value('double')
el=driver.find_element_by_xpath('//select[@id="faver"]')

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接【点击文末小卡片免费领取资料文档】

软件测试视频教程观看处:

【2024最新版】Python自动化测试15天从入门到精通,10个项目实战,允许白嫖。。。

 

7、关闭浏览器中quit和close的区别?

driver.quit():关闭整个浏览器
driver.close():关闭当前页
quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作

8、如何实现文件上传(待补充)?

第一种方法:send_keys

a、找到上传文件的入口
b、获取入口的元素的表达式(file_el)
c、上传文件

file_el.send_keys(r'c:\666.doc')第二种方法:pywinauto
 

    def upload_file(self):
        # 点击上传文件按钮
        self.browser.find_element_by_xpath('//span[contains(text(),"点击上传")]').click()
        # 使用pywinauto来选择文件
        app = pywinauto.Desktop()
        # 选择文件上传的窗口
        dlg = app['打开']
        # 选择文件地址输入框,点击
        dlg['Toolbar3'].click()
        # 键盘输入上传文件的路径
        send_keys(r'C:\Users\Lenovo')
        # 键盘输入回车键,打开该路径
        send_keys('{VK_RETURN}')
        # 选中文件名输入框,输入文件名
        dlg['文件名(&N):Edit'].type_keys('1.jpg')
        # 点击打开
        time.sleep(2)
        #dlg['打开(&O)'].click()
        dlg['打开(&O)'].double_click()
        time.sleep(2)
        return self

9、如何实现鼠标悬停,键盘事件和拖拽动作?

a、鼠标悬停

1、初始化一个action_chains对象
action=ActionChains(driver)
2、找到要悬浮的元素,
setting_el=driver.find_element_by_xpath(‘//span[@id=“s-usersetting-top”]’) -----> 设置
3、调用鼠标操作的函数,传入move_to_element()函数中
action.move_to_element(setting_el)
4、要让动作生效的话,必须加上perform
action.move_to_element(setting_el).perform()
5、再定位到高级设置标签
top_setting_el=driver.find_element_by_xpath(‘//a[text()=“高级搜索”]’)
top_setting_el.click()

b、拖拽动作

def drag_and_drop(el1,el2)
	action=ActionChains(driver)
	action.drag_and_drop(el1,el2)
	action.proform()
drag_and_drop(el1,el2)

c、双击

def double_click(el)
	action=ActionChains(driver)
	action.double_click(el)
	action.perform()
double_click(el)

10、在selenium自动化测试中,你一般完成什么类型的测试?

项目稳定

回归测试

监控

11、自动化测试有误报过bug吗?产生误报怎么办(*)?

有误报过,有时候自动化测试报告中显示发现了bug,实际去通过手工测试去确认又不存在该bug。
误报原因一般是:
a、元素定位不稳定(没有进行等待或者等待时间设置的太短;元素是动态变化的,需要优化元素表达式),
b、需要尽量提高脚本的稳定性(使用独立的测试环境,用例与用例之间要相互独立,尽量不要耦合性太强);
c、开发更新了页面但是测试没有及时更新维护!
d、网络问题(页面加载太慢)

12、自动化测试过程中,你遇到了哪些问题,是如何解决的(*)?

效率和稳定性
需求进行大改,代码需要维护
产生误报,原因:11题

13、如何提高selenium脚本的执行速度

a、不要使用强制等待
b、尽量减少不必要的操作
c、减少不必要的io操作
d、尽量使用独立的测试环境,避免其他人修改环境配置
e、用例与用例尽量不要关联,减少用例的耦合性
f、用xpath的相对表达式
g、减少for循环中代码的执行次数
h、多个if条件表达式中尽量把执行频率最高的语句写到最前面
i、定期清理浏览器缓冲,防止浏览器卡顿

14、怎么对含有验证码的功能进行自动化测试

万能码
开发关掉

15、自动化测试的使用场景(重要)?

a、需求稳定,不会频繁变更。
b、研发和测试周期长,需要频繁执行回归测试。
c、需要在多种平台上重复运行相同测试的场景。
d、某些测试项目,通过手工测试无法实现,或者手工成本太高。
e、被测软件的开发较为规范,能够保证系统的可测试行
f、线上监控

16、请描述一下自动化测试流程(重要)?

a、编写自动化测试计划
b、设计自动化测试用例
c、编写自动化测试框架
d、脚本调试
e、执行测试用例、无人值守测试
f、后期脚本维护(添加测试用例、开发更新版本)

17、web和app自动化有什么不同(重要)?

a、启动差别

一部手机只能同时测试一个apk包
web端,由于多进程,一台电脑可以开启多个浏览器进行测试

b、安装差别

app端:需要先检查软件是否安装才能进行测试
web端:不需要安装,在浏览器中输入url就可以测试。

c、页面元素操作

d、采用自动化测试框架不同
selenium
appium

18、http和https不同点(重要)

a、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
b、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
c、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

19、Selenium 中如何保证操作元素的成功率?也就是说如何保证我点击的元素一 定是可以点击的?

a、脚本中加入隐形等待和显性等待
b、必要的时候使用强制等待
c、try 方式进行id,name,clas,x path, css selector不同方式进行定位,如 果第一种失败可以自动尝试第二种
d、需要在指定的frame和窗口中

20、鼠标操作常用函数(待补充)

context_click() 右击 --> 此方法模拟鼠标右键点击效果
double_click() 双击 --> 此方法模拟双标双击效果
drag_and_drop()拖动 --> 此方法模拟双标拖动效果
move_to_element() 悬停 --> 此方法模拟鼠标悬停效果
perform() 执行 --> 此方法用来执行以上所有鼠标方法

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是SEO?SEO还存在吗?

曾经火热的seo,至今为啥很少人知道呢?为啥说seo是曾经的火热,这还得从那时百度的算法来说起了,曾经的百度可以通过seo优化自己的网站来获得百度爬虫的爬取,从而在百度获得更高的排名和权重。 现在我们打开百度随便搜索…

C语言中常用的字符串函数(strlen、sizeof、sscanf、sprintf、strcpy)

C语言中常用的字符串函数 文章目录 C语言中常用的字符串函数1 strlen函数2 sizeof函数2.1 sizeof介绍2.2 sizeof用法 3 sscanf函数3.1 sscanf介绍3.2 sscanf用法3.3 sscanf高级用法 4 sprintf函数4.1 背景4.2 sprintf用法 5 strcpy函数5.1 strcpy介绍5.1 strcpy用法 1 strlen函…

【C语言题解】 | 572. 另一棵树的子树

572. 另一棵树的子树 572. 另一棵树的子树代码 572. 另一棵树的子树 该题目需要判断一二叉树是否为另一二叉树的子树 像此类,就不算是root的子树 此题的思路为: 传入subRoot,与root相比较,判断二者是否相同 若与root不相同&#…

Java学习笔记-day02-Flowable基础API小结

1.创建ProcessEngine 使用编码创建 Testpublic void processEngine01(){// 获取 ProcessEngineConfiguration 对象ProcessEngineConfiguration configuration new StandaloneProcessEngineConfiguration();// 配置 相关的数据库的连接信息configuration.setJdbcDriver("…

网安入门12-文件上传(黑白名单,00截断)

黑名单绕过 Pass-03 有的时候后端限制了一些黑名单,比如过滤后缀名.php 我们就可以用黑名单里没有的后缀名进行绕过,例如: 大小写:.phP .pHp .AsPphp1 .php2 .php3 .php9 .phtml(成功率较高)特殊文件名绕…

TypeScript基础(三)扩展类型-接口和类型兼容性

✨ 专栏介绍 TypeScript是一种由微软开发的开源编程语言,它是JavaScript的超集,意味着任何有效的JavaScript代码都是有效的TypeScript代码。TypeScript通过添加静态类型和其他特性来增强JavaScript,使其更适合大型项目和团队开发。 在TypeS…

一文详解VScode 的远程开发

VS code登录服务器后进行编码和调试,VS code上的所有功能都可以使用,和在本地开发基本无区别。 一、配置免密远程登录 因为是要远程登录,那么需要通过使用ssh进行密钥对登录,这样每次登录服务器就可以不用输入密码了。 先来一句官…

【复习】人工智能 第2章 知识表示

一、 知识的概念 (1)知识:把有关信息关联在一起所形成的信息结构。 注:事实与规则的区别: 事实 —— “雪是白色的” 大自然自带的 规则 —— “如果头痛且流涕,则有可能患了感冒” 有点推理意味的 &…

服务器监控软件夜莺使用(二)

文章目录 一、采集器安装1. Categraf简介2. Categraf部署3. 测试服务器部署4. 系统监控插件5. 显卡监控插件6. 服务监控插件 二、监控仪表盘1. 机器列表2. 系统监控3. 服务监控 三、告警配置1. 邮件通知2. 告警规则3. 告警自愈 一、采集器安装 1. Categraf简介 Categraf 需要…

QTableView和QTableWidget之间的联系 和 区别?什么时候该用QTableView,什么时候该用QTableWidget?

参考:tableview与tablewidget的区别_wx64f5321a2db60的技术博客_51CTO博客 QTableView 和 QTableWidget 是 Qt 中用于显示和编辑表格数据的两个不同的部件,它们之间存在一些重要的区别: 一、主要区别是:QTableView可以使用自定义…

拥有影响力,项目经理才能如鱼得水

优秀的项目经理,不仅需要具备卓越的组织和协调能力,还需要拥有足够的影响力,以便能够推动项目的顺利进行。然而,现实情况是,许多项目经理并没有意识到影响力的重要性,导致他们在工作中事半功倍,…

中国建设银行 关于解决微软升级导致插入网银盾无法自动打开企业网银的通知

关于解决微软升级导致插入网银盾无法自动打开企业网银的通知 发布时间:2023-10-18 尊敬的客户: 近期Windows操作系统升级会禁止使用IE浏览器,可能会导致您在插入网银盾后无法自动弹出企业网银登录页面,您可以通过以下方式解决&…

一篇文章带您了解如何实现WordPress主题/插件本地化翻译

要实现WordPress主题和插件的本地化翻译就需要了解什么是国际化和本地化以及WordPress是如何实现国际化和本地化的。 什么是国际化? 国际化是为软件(在本例中为 WordPress)提供多语言支持的过程。国际化通常缩写为 i18n,其中 18 代…

Zoho Mail企业邮箱:跨境协作的利器,荣登Top榜单

在全球化的商业环境中,高效的协作工具对于企业及个人来说都至关重要。邮件因其自身规格正式、全球通用等特点,在跨境通信场景中仍然是最高频使用的工具之一。 Zoho Mail企业邮箱因邮件抵达率高,数据加密严,纯净无广告,…

数据分析求职-常见面试题前言

今天和大家聊聊数据分析求职常见面试题,这是这个系列的第一篇文章,但是我不想开始就直接罗列题目,因为这样的文章实在太多了,同学们的兴趣程度肯定一般。所以,我想先和大家聊聊在准备面试题时候通常遇到的困扰&#xf…

京东年度数据报告-2023全年度打印机十大热门品牌销量(销额)榜单

2023年度,打印机消费市场的销售总量呈现下滑。根据鲸参谋平台的数据显示,京东平台上打印机市场的年度销量为650万,同比下滑约9%;销售额将近55亿,同比下滑约10%。 在这里,鲸参谋平台综合了京东平台上电脑办公…

第17集《佛法修学概要》

戊四、业果轻重 诸位法师慈悲!陈会长慈悲! 诸位学员!阿弥陀佛! 请大家打开讲义第四十二页。 我们讲到戊四、业果轻重。业果的轻重有三段:第一个约心;第二个约境;第三个约相续。我们讲到第二…

Vue3+Vite打包跨平台(七牛、阿里OSS)上传部署前端项目

1、业务场景 阅读之前,想了解一下各位观众老爷们,你们公司的项目是怎么部署的: 1.本地打包手动上传服务器; 2.本地打包自动上传服务器; 3.代码仓库流水线自动构建; 4.其他…; 我们用的第3种部…

认知能力测验,⑦如何破解类比推理类测试题?

关于认知能力测评,今天这稿算是最后一篇,一共写了7篇,分别是数字推理、逻辑思维、语言常识、数量关系、图形推理、逻辑判断、和类比推理。 不论是校招、社招、网申、还是行测,在线人才测评已经是普遍普及的想象,而认知…

BUUCTF--ciscn_2019_s_31

这题是一题ret2csu,先查看下保护: 64位架构的程序,那么传参就是寄存器传参了。开启了NX,也不存在ret2shellocde。接下来黑盒测试下: 输入一个字节都能触发段错误,并且还跟了一串不知道啥来的东西,盲猜是栈上…