版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Selenium面试题及详细答案(真实职场版)一、基础概念篇(入门必问)1、什么是Selenium?它的核心作用是什么?答案:Selenium是一款开源的Web自动化测试工具,专门用来自动化操作浏览器,模拟真实用户的手动操作,比如点击、输入、下拉、弹窗处理等。核心作用主要有三点:替代人工重复的回归测试,提升测试效率适配主流浏览器,支持多平台、多系统运行兼容Java、Python等主流编程语言,扩展性强,可结合测试框架做批量自动化测试2、Selenium的四大组件分别是什么?各自作用?答案:SeleniumIDE:浏览器插件,可视化录制回放工具,不用写代码,适合新手入门、快速简单脚本录制,企业项目基本不用,仅做学习使用。SeleniumWebDriver:核心组件,通过代码直接驱动浏览器,实现精准的自动化操作,我们日常写的自动化脚本都是基于这个组件。SeleniumGrid:分布式测试工具,支持多机器、多浏览器、多系统并行执行脚本,主要用来做批量并发测试、兼容性测试,提升执行效率。SeleniumRC:旧版本核心工具,现在已经被WebDriver完全淘汰,基本不用了解。3、Selenium支持哪些浏览器和开发语言?答案:支持浏览器:Chrome、Firefox、Edge、Safari、IE等主流浏览器。支持语言:Python、Java、JavaScript、C#、Ruby,目前企业用的最多的是Python和Java。4、WebDriver的工作原理是什么?答案:属于客户端-服务端工作模式:我们写的代码是客户端,发送HTTP请求给浏览器驱动(chromedriver、geckodriver等);浏览器驱动作为服务端,接收请求,翻译为浏览器能识别的指令;浏览器执行对应操作,执行结果原路返回,反馈给代码。简单说:代码→驱动→浏览器→返回结果,三者各司其职。二、元素定位与操作篇(面试高频)1、Selenium常用的8种元素定位方式?答案:常用8种,分为基础定位和复合定位:id、name、class_name、tag_name(基础属性定位)link_text、partial_link_text(专门定位超链接)xpath、css_selector(万能定位,项目最常用)工作中优先用id、name这类稳定属性,属性不稳定时,优先用css,其次xpath。2、XPath和CSS定位的区别?各自优缺点?答案:CSS优点:执行速度快、兼容性好、语法简洁,企业首选,只支持HTML层级定位。XPath优点:功能更强,支持上下层级双向查找、模糊匹配、文本精准匹配,适合复杂页面、动态元素定位。缺点:XPath执行速度比CSS慢,部分复杂xpath稳定性一般;CSS无法向上查找父级元素。3、绝对XPath和相对XPath的区别?工作中用哪个?答案:绝对XPath:从html根节点一层层往下写,路径固定,页面微小改动就会失效,工作中绝对不用。相对XPath:基于元素自身特征匹配,不依赖完整层级,简洁稳定,容错率高,项目全程使用相对XPath。4、如何定位动态变化的元素(id/class随机变化)?答案:动态元素特征是属性值随机,不能直接用固定属性定位,常用4种方案:使用xpath模糊匹配:contains()、starts-with()、ends-with(),匹配部分固定属性通过文本定位:text()精准匹配页面固定文本通过层级、相邻元素定位,找稳定的父级、兄弟元素辅助定位使用css模糊匹配,匹配固定后缀、前缀属性5、Selenium常用的元素操作方法有哪些?答案:日常最常用的几个:click():点击元素send_keys():输入文本、输入按键(回车、清空等)clear():清空输入框内容text:获取元素文本内容get_attribute():获取元素属性值(href、value、class等)is_displayed()/is_enabled()/is_selected():判断元素显示、可用、选中状态三、等待机制篇(必考核心)1、Selenium三种等待方式及区别?工作中用哪种?答案:三种等待:强制等待、隐式等待、显式等待(1)强制等待time.sleep()固定等待指定时间,不管页面是否加载完成,执行效率低,不稳定,仅调试用,项目禁止使用。(2)隐式等待implicitly_wait()全局等待,设置一次全程生效。在规定时间内循环查找元素,找到就立即执行,超时就报错。缺点:只能等待元素存在,不能等待元素可点击、可见,针对性差。(3)显式等待WebDriverWait(项目首选)针对性等待,针对指定元素、指定状态(可见、可点击、存在)等待,灵活精准、效率最高。工作中主流方案:全局隐式等待+关键步骤显式等待。2、显式等待的使用场景?答案:所有页面加载慢、网络延迟、动态渲染的场景,比如:页面弹窗、浮层延迟出现接口请求后才渲染的按钮、文本切换窗口、iframe后元素加载延迟下拉加载、分页加载的元素四、窗口、iframe、弹窗处理1、如何处理多窗口切换?答案:核心思路:获取所有窗口句柄→切换指定句柄获取当前窗口句柄:current_window_handle获取所有窗口句柄:window_handles,返回列表根据下标切换新窗口:switch_to.window(句柄)一般新打开的窗口在列表最后一位,直接取[-1]即可。2、iframe嵌套页面如何处理?不切换会有什么问题?答案:iframe内的元素属于独立页面,不切换的话,直接定位会报元素找不到的错。切换方式三种:根据iframe下标切换根据iframe的id、name属性切换先定位iframe元素,再切换操作完iframe内元素后,必须切回主页面:switch_to.default_content()3、三种弹窗(alert/confirm/prompt)怎么处理?答案:JS弹窗不能直接定位元素,必须切换弹窗处理:alert弹窗:accept()确认confirm弹窗:accept()确认、dismiss()取消prompt弹窗:send_keys()输入内容,再accept()确认text方法:获取弹窗提示文本五、鼠标键盘、JS实操篇1、Selenium如何实现鼠标悬浮、右击、双击操作?答案:通过ActionChains鼠标动作链实现,常用操作:move_to_element():鼠标悬浮context_click():右击double_click():双击drag_and_drop():拖拽所有动作写完必须加perform()执行生效。2、什么时候需要用JS执行脚本?Selenium哪些操作做不到?答案:Selenium原生方法有局限性,以下场景必须用JS:页面滚动(滚动到元素、滚动到底部)修改元素属性(去掉readonly、disabled)隐藏元素、遮挡元素的强制点击复杂动态元素无法通过常规方法定位操作的场景常用execute_script()执行JS代码。3、下拉框选择怎么处理?答案:标准select下拉框用Select类处理,三种选择方式:select_by_index():根据下标选择select_by_value():根据value属性选择select_by_visible_text():根据下拉文本选择非原生select下拉框(自定义div下拉),直接定位选项元素点击即可。六、报错排查与实战问题(面试压轴)1、运行脚本最常见的报错有哪些?原因是什么?答案:工作中高频报错:NoSuchElementException:元素找不到。大概率是定位写错、页面没加载完、存在iframe/新窗口未切换、元素动态渲染。ElementNotInteractableException:元素不可交互。元素隐藏、被遮挡、未加载完成、readonly/禁用。StaleElementReferenceException:元素过期。页面刷新、DOM更新后,之前定位的元素失效,需要重新定位。TimeoutException:等待超时。网络慢、元素加载失败、定位错误。2、页面元素定位没问题,但是点击报错、点不动是什么原因?答案:常见5个原因及解决办法:元素未加载完成:增加显式等待元素被弹窗、浮层、遮挡层挡住:先关闭遮挡元素元素隐藏/透明:用JS强制点击、修改元素display属性页面未滚动到元素位置:JS滚动到可视区域元素是只读/禁用状态:JS移除disabled、readonly属性3、怎么解决StaleElement元素过期问题?答案:出现原因是DOM刷新后,旧的元素对象失效。解决方式:不要提前一次性定位所有元素,用的时候再实时定位循环操作元素时,每次循环重新执行定位代码页面刷新、跳转后,重新获取元素对象4、自动化脚本运行不稳定,偶尔报错偶尔正常,怎么排查?答案:90%都是页面加载时序问题,排查思路:检查是否存在等待不足,替换强制等待为显式等待确认动态元素、接口渲染元素是否做了针对性等待检查是否有iframe、窗口切换遗漏优化元素定位,替换不稳定的绝对路径、随机属性定位七、项目实战延伸面试题1、你在项目中如何封装Selenium自动化框架?核心模块有哪些?答案:我日常搭建的是轻量化PO模式自动化框架,核心分5个模块:驱动封装模块:统一初始化、关闭浏览器,兼容多浏览器公共工具模块:封装等待、元素操作、弹窗、窗口切换、JS操作等通用方法页面层PO:每个页面单独封装元素定位和页面操作方法,解耦代码测试用例层:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 探放水题库及答案
- 综合布线系统习题及答案
- 2026年液压与气压传动习题库及参考答案
- 2026年外科手术常用器械及操作技术模拟测试题及答案解析
- 网络安全工程师入侵检测与防御技术手册
- 2026年经济师考试《财政税收》培训试卷
- 跨境电商跨境物流时效管理手册
- IT技术支持专员问题解决效率及准确度绩效评定表
- 化妆品研发工程师产品配方与功效测试能力评估表
- 2027届甘肃省天水市秦安县重点名校中考猜题物理试卷含解析
- 青少年体能训练与发展
- 老年人牙齿缺失健康管理
- 全国大学生职业规划大赛《药品经营与管理》专业生涯发展展示【高职(专科)】
- 2025年新版hsk监考资格考试真题及答案
- 2025年共青团团课考试题库(含答案)
- 建筑碳排放计算标准解读
- 固态继电器课件
- 黑白木刻版画教学课件
- 水电站教学课件
- 伤口造口专科发展
- DBJ04-T495-2025 《发震断裂区域建筑抗震设计标准》
评论
0/150
提交评论