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

https://www.cnblogs.com/ITester520/p/13477226.html

1、自动化代码中,用到了哪些设计模式?

  1. 单例设计模式
  2. 工厂模式
  3. PO设计模式
  4. 数据驱动模式
  5. 面向接口编程设计模式

2、什么是断言(Assert)?

  • 断言Assert用于在代码中验证实际结果是不是符合预期结果,
  • 如果测试用例执行失败会抛出异常并提供断言日志

3、什么是web自动化测试

  • Web自动化测试是从UI (用户界面)层面进行的自动化测试
  • 测试人员通过编程自动化程序(测试用例脚本)来打开浏览器测试网站的业务逻辑

4、什么是selenium

Selenium是一个开源的web自动化测试框架,支持多种编程语言开发自动化测试脚本,支持跨浏览器平台进行测试

5、出Selenium中你最熟悉的接口或类

WebDriver、InternetExplorerDriver、 FirefoxDriver、 ChromeDriver、 WebElement、WebDriverWait、 By

6、元素定位类型有哪些?

元素定位的方法一共有8种方式:

  • id定位: find_element_by_id()
  • name定位: find_element_by_name()
  • class定位:find_element_by_class_name()
  • tag定位:find_element_by_tag_name()
  • link定位:find_element_by_link_text()
  • partial_link定位:find_element_by_partial_link_text()
  • xpath定位:find_element_by_xpath()
  • CSS定位:find_element_by_css_selector()

By类一共有8种元素定位方式,它们都是静态方法:

  • By.id():
  • By.name():
  • By.tagName():
  • By.className():
  • By.cssSelector():
  • By linkText():
  • By partialLinkText():
  • By.xpath():

7、Xpath是什么?

  • 它是查找web页面元素的一种方式,相当于元素在dom中间的一个路径,可以采用绝对路径和相对路径的方式进行定位
  • 它对于定义动态的页面元素有很大的帮助,同时也需要谨慎使用,因为如果页面结构发生变化,那么定位信息也可能需要变化。

8、findElement()和findElements(方法有什么区别

两个都是查找页面元素的方法:

  • findElement():查找一个页面元素,只会返回一个WebElement对象
  • findElements() :查找页面上所有符合匹配的元素,返回元素集合

9、登录按钮除了用click方法进行点击以外还有其他方式吗?

还可以使用submit()方法,前提是input元素的type为submit

10、怎么提高Selenium脚本的执行速度

  • 优化等待时间:使用 WebDriverWait 智能等待来代替线程等待 sleep 和 隐式等待 implicityWait
  • 减少不必要的操作:如直接进入某页面代替经过一系列自动化操作进入某页面在服务器允许的情况下,使用多线程实现并发执行测试用例

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

  • 图像识别,技术难度大,效果不佳,不推荐
  • 屏蔽验证码,邀请开发处理,但在预生产环境或者生产环境不推荐
  • 万能验证码,使用一个复杂的其他人无法猜到的验证码

12、怎么验证复选按钮是不是被选中

可以使用元素的 isSelected() 方法,如果返回的是 true 则说明被选中,否则表明未被选中

13、如何处理alert弹窗?

  • 处理alert弹窗首先需要跳转到alert上,然后再点击确定或者取消按钮
  • Alert alert = driver.switchTo().alert(); //切换到alert
  • alert.accept0; //确定
  • alert.dismiss0; //取消

14、下拉菜单中如何去选择一个菜单项?

  • 如果下拉菜单是select标签,使用: selectByValue() 或者 selectByIndex() 或者 selectByVisibleText() 即可
  • 如果这个下拉菜单不是通过 select 标签创建,则直接通过 xpath 定位元素然后去点击选择

15、如何模拟浏览器的前进和后退、刷新操作

  • driver.back() 后退
  • driver.forward() 前进
  • driver.refresh() 刷新

16、怎么获得当前页面的URL?

String url = driver.getCurrentUrl();

17、WebDriver的close()和quit()方法的区别是什么?

  • quit()是关闭浏览器,并且关闭进程
  • close()关闭当前标签页,不会关闭进程

18、你觉得自动化测试用例哪些缺陷?

  • 成本比较大,而承销可能并不高
  • 适合自动化测试的功能有限
  • 某些功能操作相对复杂,比如验证码
  • 维护成本高,一旦项目需求变更,自动化测试脚本和用例就需要改进

19、web端功能自动化,如何实现上传文件

  • 第一种方式:标签是input,直接使用页面元素定位,然后发送文件路径即可
  • 第二种方式:使用autoit脚本上传方式

20、遇到 这种class中间有空格的控件,如何通过class定位?

  • xpath定位:直接//d1 [@class=“inf_bar clearfx”]
  • css定位: d1.inf_bar.clearfix

21、selenium自动化,遇到iframe如何处理?

使用switch_to.frame切换进iframe当中后,再去定位其中的元素操作

22、Web端功能自动化中,如何切换句柄。

先获取所有窗口句柄,然后使用 switch_ to.window() 切换到指定窗口

23、测试中遇到 readonly 属性的控件,需要如何处理?简述一下思路

先修改关闭readonly 属性,然后再操作元素

24、需求:给定一个只包含正整数且非空的数组,返回该数组中重复次数最多的前N个数字(返回结果按重复次数从多到少降序), 请用熟悉的语言实现该需求。

a = [1,<
<think>好的,我需要处理用户关于Python自动化测试面试题的查询。首先,查看用户提供的系统级指令,确保遵循所有格式要求,比如数学表达式的使用和引用标识。用户提到想查找Python自动化测试面试题目,并且示例中展示了接口篇的问题,所以应该围绕这个主题展开。 接下来,检查用户提供的引用内容,引用[1]和引用[2]都涉及Python自动化测试的接口测试题目,比如数据回滚、接口复用、网络协议、HTTP方法等。需要将这些内容整合到回答中,确保每个问题后正确添加引用标识。 然后,按照用户要求的结构,首先生成相关问题,再详细回答。相关问题需要围绕Python自动化测试的不同方面,如接口测试、单元测试、持续集成等。回答部分需要分点清晰,每个问题给出简明扼要的解答,并自然地附上引用来源。 同时,注意使用中文,避免使用任何Markdown格式,代码块用三个反引号包裹。确保LaTeX语法正确,但根据用户的问题,可能数学公式较少,不过仍需留意。最后,检查所有引用是否正确对应,没有遗漏。 可能遇到的问题包括如何组织问题顺序,确保覆盖主要知识点,以及引用标识的正确应用。需要确保每个回答中的引用与提供的内容匹配,例如关于TCP三次握手的问题对应引用[2]。 最后,生成相关问题时要考虑用户可能的进一步需求,比如框架选择、性能测试等,确保全面性。完成所有内容后,再次检查格式是否符合要求,尤其是引用标识的位置和代码块的正确使用。</think>### Python自动化测试面试题集锦 #### 1. 接口测试如何实现数据回滚? 在接口测试中,可通过数据库操作库(如SQLAlchemy或Peewee)编写脚本,在测试前后备份和恢复数据。例如,使用事务回滚机制或临时数据库快照来确保测试数据隔离[^1]。 ```python # 示例:使用事务回滚 from sqlalchemy import create_engine from contextlib import contextmanager engine = create_engine("sqlite:///test.db") @contextmanager def session_scope(): session = Session(bind=engine) try: yield session session.commit() except: session.rollback() raise finally: session.close() ``` #### 2. TCP和UDP的主要区别是什么? - **TCP**:面向连接,确保数据可靠传输(通过确认重传、流量控制等),适用于文件传输、网页浏览[^2]。 - **UDP**:无连接,传输效率高但可能丢包,适用于实时视频、语音通话[^2]。 #### 3. HTTP常见状态码有哪些? - $200$:请求成功 - $404$:资源未找到 - $500$:服务器内部错误 - $401$:未授权访问[^2] #### 4. 如何设计可复用的接口测试用例? - 使用参数化(如`pytest.mark.parametrize`)覆盖多场景 - 封装公共请求方法(如封装`requests`库) - 通过配置文件管理测试数据 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值