“今天勇哥给大家介绍一下Python手工测试中的一些常见笔试题,包括Python基础知识、测试框架、测试工具、测试方法等,希望能够帮助大家提高水平和信心。”
项目相关
哪些项目适合手动测试?
答:一般来说,适合手动测试的项目应该满足以下条件:
您参与过什么类型的手动测试项目?
A:我参与过以下类型的手动测试项目:
测试框架
PO 模式有哪些?
答:PO模式(PageObjectModel)是一种设计模式css3 子类选择器,用于将页面上的元素和操作封装成对象,进而实现页面与业务逻辑的分离。 PO模式可以增强代码的复用性、可读性和可维护性,同时还可以减少代码的耦合性和冗余性。
PO模式的封装原理是什么?
答:PO模式的封装原理如下:
你用过什么Python测试框架?
答:我使用过以下Python测试框架:
测试工具
如何定位硒中的隐藏元素?
答:selenium中的隐藏元素是指在网页上不可见但存在于DOM树中的元素。 隐藏元素可以通过多种方式定位:
关闭浏览器中退出和关闭的区别
答:quit和close都是seleniumWebDriver中的方法,用于关闭浏览器。 它们的区别如下:
比如你遇到过这些异常
答:我在使用seleniumWebDriver进行手动测试时遇到以下异常:
如何处理警报弹窗?
答:警报弹出窗口是由 JavaScript 生成的一个对话框,用于显示一些信息或警告。 seleniumWebDriver 提供了 switch_to.alert 方法,可以切换到alert弹窗并执行以下操作:
如何在selenium中处理多个窗口?
答:在selenium中,有时会遇到打开多个浏览器窗口的情况,例如点击链接或按钮后,会弹出一个新窗口。 这时候我们就需要切换到不同的窗口,进行相应的操作。 seleniumWebDriver 提供了以下方法来处理多个窗口:
如何判断硒中是否存在某种元素?
答:判断selenium中是否存在某个元素有以下几种方法:
手动化中的三种等待类型是什么? 他们有什么特点?
答:手动等待分为三种类型:
如何保证selenium中操作元素的成功率? 也就是说,如何保证被点击的元素一定是可点击的呢?
答:selenium中有几种方法可以保证操作元素的成功率:
如何提高selenium脚本的执行速度?
答:提高selenium脚本的执行速度有以下几种方法:
用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,但是上次却不能通过。 如何提高用例的稳定性?
A:提高用例的稳定性有以下几种方法:
测试方法
您的手动用例的执行策略是什么?
答:我的手动用例的执行策略如下:
什么是持续集成?
答:持续集成(Continuous Integration)是一种软件开发实践,是指在软件开发过程中频繁地将代码集成到主干中,并手动建立、测试、部署等操作。 持续集成可以提高软件质量、效率和可靠性,同时降低风险和成本。
手动测试时是否需要连接数据库进行数据校准?
答:手动测试时是否需要连接数据库进行数据校准,取决于具体的测试需求和测试目标。 一般来说,以下几种情况需要连接数据库进行数据校准:
常用的元素定位方式有哪几种? 你最喜欢哪一个,为什么?
答:8种,即:
如何定位页面上动态加载的元素?
答:属性的动态变化是指元素没有固定的属性值,所以只能通过相对位置来定位,比如xpath的轴,找到元素的父节点或者子节点等。
单击链接后,selenium 是否手动等待该页面完成加载?
答:点击链接后,seleniumWebDriver默认会使用隐式等待(implicitly_wait)等待页面加载。 隐式等待会设置一个全局最大等待时间。 在此期间,如果页面加载完成,则后续操作将继续进行。 如果加载未完成,则会抛出异常。 隐式等待时间可以通过implicitly_wait设置,通常建议设置为10秒左右。
但是隐式等待有一个缺点,就是只能判断页面是否已经加载,而不能判断页面上的元素是否已经加载。 为此,有时即使页面加载完毕,页面上的元素还没有加载完毕,如果此时进行元素操作,就会出现找不到元素或者无法与元素交互的情况。 为了防止这些情况,我们可以在expected_conditions模块中使用显式等待(WebDriverWait)和presence_of_element_ located或visibility_of_element_ located等条件来等待页面上的元素出现或可见后再进行操作。
另外,我们还可以使用set_page_load_timeout方法来设置页面加载超时时间并捕获TimeoutException。 当页面加载超过设定时间时,会抛出异常并停止等待。 这可以防止由于网络或服务器问题而导致无限等待。 例如:
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
driver = webdriver.Chrome()
driver.set_page_load_timeout(10) # 设置页面加载超时时间为10秒
try:
driver.get("https://www.example.com")
except TimeoutException:
print("Page load timeout")
driver.execute_script("window.stop()") # 停止页面加载
webdriverclient的原理是什么?
答:webdriverclient是指用Python或其他语言编写的测试脚本,用于调用seleniumWebDriverAPI来控制浏览器进行手动测试。 webdriverclient的原理是基于客户端-服务器(client-server)模型,如下:
webdriver 的合约有哪些?
答:webdriver合约是指WebDriverWireProtocol,它是一个基于RESTful的HTTP合约,用于定义webdriverclient和webdriverserver之间的通信规范。 webdriver合约包括以下部分:
启动浏览器时使用哪个 Webdriver 合约?
答:启动浏览器时,会用到POST/session命令,这是webdriver合约中定义的命令,用于创建一个新的会话(session)并返回一个会话ID(sessionID)。 会话 ID 是用于识别和控制特定浏览器实例的唯一标识符。 创建会话时,可以使用parameters参数指定要启动的浏览器类型、版本、选项等信息。
如何在下拉框中选择value=xx的选项?
答:下拉框中选择value=xx的选项有以下几种方式:
Python中常见的可变参数类型和不可变参数类型有哪些?
答:Python中常见的可变参数类型和不可变参数类型如下:
如何在定位元素后突出显示该元素(用于调试目的)?
答:定位元素后突出显示元素有几种方法:
有哪些断言?
答:判断是指在测试过程中对测试结果进行验证,以确定测试结果是否符合预期的操作。 判断可以提高测试的准确性和有效性,也可以发现和定位问题。 断言有以下类型:
您在手动测试过程中遇到了哪些问题以及如何解决的?
答:在手动测试过程中,我遇到了以下问题:
如何模拟浏览器的前进、后退、刷新操作?
答:模拟浏览器的前进、后退、刷新操作有以下几种方法:
什么是关键字驱动的测试?
答:关键字驱动测试是一种将测试用例中的操作步骤和验证点从测试脚本中分离出来,封装成一系列关键字的测试方法,如click、input、assert等。在执行测试时,通过读取外部关键字文件或表,根据关键字的顺序和参数,调用相应的函数或方法来执行测试用例。 关键字驱动的测试可以提高测试用例的可读性、可扩展性和可维护性css3 子类选择器,同时还可以降低编码难度和技术要求。
如何实现关键字驱动测试?
答:实现关键字驱动测试有几个步骤:
Python 基础知识
*args 和 kwargs 是什么? **
答:*args和**kwargs是Python中的两个特殊参数,用于接收不定数量的位置参数和关键字参数。 它们的含义如下:
如何使用 *args 和 kwargs? **
答:使用*args和**kwargs时有以下几种情况:
Python中有哪些垃圾回收机制?
答:Python中的垃圾回收机制是指Python类库手动管理显存的机制。 用于回收不再使用的对象,释放显存空间。 Python中的垃圾回收机制主要有以下两种方法:
如何自动触发垃圾回收?
答:可以使用Python中的gc模块来自动触发垃圾回收。 具体方式有以下几种:
总结