Python 官方文档:入门教程 => 点击学习
这里写目录标题 1、如果页面元素经常发生需求变化,你是如何做?2、在你做自动化过程中,遇到了什么问题吗?举例下3、如何处理alert弹窗4、在selenium中如何处理多窗口?a、获得百度浏
利用po模式,业务逻辑和测试逻辑相分离,当某个页面经常发生变化只需要维护页面,包括元素定位表达式,封装业务方法;不需要修改测试逻辑;
页面经常变化正是自动化测试的痛点,我们改不了需求,目前利用po模式是最有效的解决方法。
a、页面经常变化,需要修改脚本
b、脚本不稳定,经常性的跑失败
c、提升效率,会影响稳定性
先切换到弹窗:alert=driver.switch_to.alert
确认:alert.accept()
取消:alert.dismiss()
获取弹窗中文本:alert.getText()
弹窗中输入内容:alert.sendkeys()
以百度浏览器测试:
search_window=driver.current_window_handle
driver.find_element_by_xpath('//a[text()="hao123"]').click()time.sleep(2)
all_handles=driver.window_handles
for handle in all_handles:if handle!=search_window:driver.switch_to.window(handle)driver.find_element_by_xpath('//a[text()="网易"]').click()
driver.switch_to.window(search_window)
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()
def select(el):s=Select(el)#初始化Select对象s.select_by_visible_text('kobe')el=driver.find_element_by_xpath('//select[@id="faver"]')
def select(el):s=Select(el)s.select_by_value('double')el=driver.find_element_by_xpath('//select[@id="faver"]')
driver.quit():关闭整个浏览器
driver.close():关闭当前页
quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作
a、找到上传文件的入口
b、获取入口的元素的表达式(file_el)
c、上传文件
file_el.send_keys(r'c:\666.doc')
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
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、要让动作生效的话,必须加上perforMaction.move_to_element(setting_el).perfORM()5、再定位到高级设置标签top_setting_el=driver.find_element_by_xpath(‘//a[text()=“高级搜索”]’)top_setting_el.click()
def drag_and_drop(el1,el2)action=ActionChains(driver)action.drag_and_drop(el1,el2)action.proform()drag_and_drop(el1,el2)
def double_click(el)action=ActionChains(driver)action.double_click(el)action.perform()double_click(el)
有误报过,有时候自动化测试报告中显示发现了bug,实际去通过手工测试去确认又不存在该bug。
误报原因一般是:
a、元素定位不稳定(没有进行等待或者等待时间设置的太短;元素是动态变化的,需要优化元素表达式),
b、需要尽量提高脚本的稳定性(使用独立的测试环境,用例与用例之间要相互独立,尽量不要耦合性太强);
c、开发更新了页面但是测试没有及时更新维护!
d、网络问题(页面加载太慢)
效率和稳定性
需求进行大改,代码需要维护
产生误报,原因:11题
a、不要使用强制等待
b、尽量减少不必要的操作
c、减少不必要的io操作
d、尽量使用独立的测试环境,避免其他人修改环境配置
e、用例与用例尽量不要关联,减少用例的耦合性
f、用xpath的相对表达式
g、减少for循环中代码的执行次数
h、多个if条件表达式中尽量把执行频率最高的语句写到最前面
i、定期清理浏览器缓冲,防止浏览器卡顿
万能码
开发关掉
a、需求稳定,不会频繁变更。
b、研发和测试周期长,需要频繁执行回归测试。
c、需要在多种平台上重复运行相同测试的场景。
d、某些测试项目,通过手工测试无法实现,或者手工成本太高。
e、被测软件的开发较为规范,能够保证系统的可测试行
f、线上监控
a、编写自动化测试计划
b、设计自动化测试用例
c、编写自动化测试框架
d、脚本调试
e、执行测试用例、无人值守测试
f、后期脚本维护(添加测试用例、开发更新版本)
a、启动差别
一部手机只能同时测试一个apk包
web端,由于多进程,一台电脑可以开启多个浏览器进行测试
b、安装差别
app端:需要先检查软件是否安装才能进行测试
web端:不需要安装,在浏览器中输入url就可以测试。
c、页面元素操作
d、采用自动化测试框架不同
selenium
appium
a、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
b、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
c、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
a、脚本中加入隐形等待和显性等待
b、必要的时候使用强制等待
c、try 方式进行id,name,clas,x path, css selector不同方式进行定位,如 果第一种失败可以自动尝试第二种
d、需要在指定的frame和窗口中
context_click()
右击 --> 此方法模拟鼠标右键点击效果
double_click()
双击 --> 此方法模拟双标双击效果
drag_and_drop()
拖动 --> 此方法模拟双标拖动效果
move_to_element()
悬停 --> 此方法模拟鼠标悬停效果
perform()
执行 --> 此方法用来执行以上所有鼠标方法
来源地址:https://blog.csdn.net/YZL40514131/article/details/125940126
--结束END--
本文标题: python自动化测试面试题总结(一)(持续更新)
本文链接: https://www.lsjlt.com/news/403126.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0