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"]')

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() 执行 --> 此方法用来执行以上所有鼠标方法


python自动化测试面试题总结(一)(持续更新)相关推荐

  1. 详细前端面试题javascript篇--持续更新

    最新前端面试题汇总大全(超详细含vue,react,css,js,webpack,性能优化等)–持续更新点击查看 前端HTML篇 前端CSS篇 前端面试题js篇--持续更新 1. JS 数据类型 ?存 ...

  2. 「高级java工程师」常见面试题及其答案(持续更新)

    「java工程师」常见面试题及其答案请见: 「java工程师」常见面试题及其答案(持续更新)_好人老李的博客-CSDN博客 目录 java基础 常用的 jvm 调优方法? OOM的常见场景及其原因.解 ...

  3. 「java工程师」常见面试题及其答案(持续更新)

    「高级java工程师」常见面试题及其答案: 「高级java工程师」常见面试题及其答案(持续更新)_好人老李的博客-CSDN博客 目录 java基础 面向对象与面向过程的区别? JRE.JDK.JVM的 ...

  4. 【100道面试题真题讲解】C++面试题讲解+JAVA面试题讲解+Linux面试题讲解+数据结构面试题+计算机网络面试题 讲解视频-持续更新中

    最近找到了一个非常好的公众号:IT笔试面试真题讲解,每天视频分享一道IT公司面试高频题目,完全免费哦,非常适合找工作的学生复习+总结+提炼. 白嫖不敢独吞,分享给大家,也给作者增加一点访问量,鼓励作者 ...

  5. python自动化测试面试题大全带答案_Python自动化测试笔试面试题精选

    前言 随着行业的发展,编程能力逐渐成为软件测试从业人员的一项基本能力.因此在笔试和面试中常常会有一定量的编码题,主要考察以下几点. 基本编码能力及思维逻辑 基本数据结构(顺序表.链表.队列.栈.二叉树 ...

  6. 无人机民航执照、AOPA多旋翼、固定翼视距内驾驶员、机长考证试题+解析+答案(无人机考证试题库,持续更新...)

    无人机执照考试.无人机考证考试题库(1000题,解析+答案) 持续更新中 301.目视判断风切变的方法,以下不正确的是: A.雷暴冷性外流气流的尘卷风(云) B.卷积云带来的降雨 C.雷暴云体下垂的雨 ...

  7. k8s面试题大全(持续更新中)

    前言 本篇模拟面试官提问的各种docker,k8s问题,意在提高面试通过率,欢迎在评论区探讨,同步进步. docker的工作原理是什么,讲一下 docker是一个Client-Server结构的系统, ...

  8. python自动化测试面试题(二)(持续更新)

    接上一篇博文:https://blog.csdn.net/YZL40514131/article/details/125940126 21.selenium原理 a.当使用 Selenium 2.0 ...

  9. Python自动化测试面试题及答案(持续更新中)

    https://www.cnblogs.com/ITester520/p/13477226.html 1.自动化代码中,用到了哪些设计模式? 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接 ...

最新文章

  1. STM32电源框图解析(VDD、VSS、VDDA、VSSA、VREF+、VREF-、VBAT等的区别)
  2. 请善用工具审核您的内核代码:)
  3. java_day21_反射和注解
  4. vim Ctrl+S锁定屏幕
  5. 人工智能学习书单推荐
  6. mybatis 注解 占位符
  7. Confluence5.8部分空间名称显示为问号的解决方案
  8. Maven学习(1) - Maven入门
  9. UE4像素流送PixelStreaming
  10. 计算机网络原理-计算题汇总
  11. Git版本控制管理教程(一):介绍
  12. python做excel表格教程视频_Python玩转excel表格
  13. su灯光插件_V-Ray for SketchUp渲染外部照明快速入门
  14. 操作系统原理第五章(资源分配与调度)
  15. oracle的join 优化,oracle索引优化之join部分
  16. 微信小程序TabBar的使用
  17. TC8:UDP_FIELDS_01-16
  18. angular ng-show中表达式的写法
  19. CAD绘图次序快捷键是什么?怎么用?
  20. 无光驱安装原版 windows server2008,win7 的方法,64位的

热门文章

  1. 四、Java NIO Selector
  2. 一元线性回归分析一和 相关数学知识的定义
  3. PHP中traits是用来干嘛的?trait的语法,作用,特点。
  4. [问题已处理]-k8s报错Error from server- error dialing backend- dial tcp 172.16.20.88-10250
  5. (四)SpringCloud代码实战之hystrix熔断器
  6. C语言求把100元换成20元,10元,5元的纸币.要求每种纸币至少有一张。以及最少张数
  7. python 中arange函数_Python numpy.arange函数方法的使用
  8. js:运用JavaScript循环制作一个简易ATM机
  9. 算法 64式 16、字符串算法整理
  10. 前端每周清单第 34 期:Vue 现状盘点与 3.0 展望,React 代码迁移与优化,图片优化详论