IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 2022 年 Selenium 自动化高频面试题及答案整理 -> 正文阅读

[开发测试]2022 年 Selenium 自动化高频面试题及答案整理

面试题列表

selenium中,有哪些不同定位元素方法?
你最常用哪种定位方式,为什么?
怎么判断元素是否存在?
如何通过子元素定位父元素?
如何去定位动态变化的元素?
selenium中隐藏元素如何定位?
一个元素明明定位到了,点击无效(也没报错).如何解决?
定位不到元素是什么原因导致的?
selenium有哪些等待时间方式及场景应用?
selenium自动化测试中遇见过哪些异常?
如何选中下拉列表中的下拉选项?
在日历这种web表单你是如何处理的?
Selenium如何处理弹窗?
driver.quit()和driver.close0)的区别?
Selenium中如何保证操作元素的成功率或者稳定性?
如何提高selenium脚本的执行速度?
自动化测试使用过分布式吗?如何实现的?
webdriver client工作原理?
什么是POM,为什么要使用?
在你做自动化过程中,遇到了什么问题吗?
你的自动化用例的执行策略是什么?
自动化测试的优势是什么?
说一下开展自动化工作的主要流程是怎样的?
在制定自动化测试计划的需要考虑哪些方面?
你自动化测试时关注的一些指标?
你们公司自动化测试用例大概多少条?覆盖率多高?
你们公司开展自动化测试遇到一些什么问题?

selenium中,有哪些不同定位元素方法?

  • 常用的八大定位方式:id、name、class、xpath、CSS selector、link_text、partial_link、tag
  • 高级定位方式:JavaScript、jQuery

你最常用哪种定位方式,为什么?

  • 优先使用id 方式,因为简单方便,定位最快。
  • 其次是 Xpath,因为xpath定位方式非常灵活,由于很多情况下html标签的属性不够规范,无法唯一定位,CSS不支持文本搜索,XPATH支持文本搜索
  • 最后选择 CSS ,因为在大多数浏览器中,解析速度比XPath更快,但是当查找元素比较简单,用css没错,如果复杂,用xpath比较好

怎么判断元素是否存在?

  • 方法1,用try...except...
def is_element_exist(driver, locator):
    '''
    判断元素是否存在,存在返回True,不存返回False
    :param locator: locator为元组类型,如("id", "id")
    :return: bool值,True or False
    '''
    try:
        driver.find_element(*locator)
        return True
    except Exception as msg:
        print("元素%s找不到:%s" % (locator, msg))
        return False
  • 方法2,使用WebDriverWaitexpected_conditions结合判断(推荐使用
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

def is_element_exist(driver, locator):
    '''
    结合WebDriverWait和expected_conditions判断元素是否存在,
    每间隔0.5秒判断一次,30s超时,存在返回True,不存返回False
    :param locator: locator为元组类型,如("id", "id")
    :return: bool值,True or False
    '''
    try:
        WebDriverWait(driver, 30, 0.5).until(EC.presence_of_element_located(locator))
        return True
    except:
        return False
  • 方法3,用elements定义一组元素方法
def is_element_exist(driver, locator):
    '''
    判断元素是否存在,存在返回True,不存返回False
    :param locator: locator为元组类型,如("id", "id")
    :return: bool值,True or False
    '''
    eles = driver.find_elements(*locator)
    if len(eles) < 1:
        return False
    else:
        return True

如何通过子元素定位父元素?

  • 通过xpath的语法直接定位:.//*[@name=“name”]/… 两个点…就是代表父级元素

如何去定位动态变化的元素?

  • 类型一:属性动态
    • 通过xpath的轴, parent/following-sibling/precent-sibling
    • findbyelements遍历
  • 类型二:动态加载的元素
    • 触发动态事件事件,进而findElemnt,例如多级菜单,可能通过ajax加载数据

selenium中隐藏元素如何定位?

如果元素被隐藏,主要对元素添加了 type="hidden" 或者 style="display: none;" 属性

  • 定位隐藏元素跟正常元素一样,使用基本定位方式即可,但是无法进行clicksend_keysclear等操作
  • 操作隐藏元素,通过JS操作隐藏元素(重点)

一个元素明明定位到了,点击无效(也没报错),如何解决?

  • 使用js点击,selenium有时候点击元素是会失效

定位不到元素是什么原因导致的?

  • 元素定位方式编写错误
  • 点击速度过快,页面没有加载出来就需要点击页面上的元素
  • frame/iframe表单嵌套
  • 页面跳转到新的标签页,未切换handle窗口
  • 使用了动态属性进行定位元素
  • 页面上的警告弹框
  • 页面元素失去焦点导致脚本运行不稳定
  • 元素被遮挡,不可用,不可见

selenium 有哪些等待时间方式及场景应用?

总共有三种等待方式,分别为强制等待、隐式等待、显示等待

强制等待sleep()

不管元素,是否在页面出现都等 3 秒,再去操作它,是强制性。但是这种情况往往一般都只用在脚本的调试,真正的自动化测试用例中一般不会使用。

隐式等待implicitly_wait()

是设置的全局等待,等待时间是对页面中的所有元素设置加载时间,如果超出了设置时间的则抛出异常。
缺点:隐式等待的三秒钟就是在等待这个页面的所有 js 和图片加载出来,就算需要操作的按钮出来了,还要去等 页面js、img 加载完成

显示等待WebDriverWait()

是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException

selenium 自动化测试中遇见过哪些异常?

方法说明
NoSuchElementException当选择器没有返回一个元素时,异常抛出
ElementNotVisibleException元素DOM存在,但它是不可见的,不能与之进行交互,异常将抛出
NoSuchAttributeException当选择元素不存在该属性时,抛出异常
ElementNotSelectableException当选择不可选元素时,抛出异常
NoSuchFrameException当切换的框架不存在时,异常抛出
TimeoutException当执行操作命令执行超过最长时间完成,抛出异常
NoSuchWindowException当切换的目标窗口不存在时,异常抛出

如何选中下拉列表中的下拉选项?

  • 通过选项的顺序,第一个为0
    select_by_index(index)
  • 通过value属性
    select_by_value(value)
  • 通过选项可见文本
    select_by_visible_text(text)

在日历这种web 表单你是如何处理的?

  • 直接通过js操作

Selenium如何处理弹窗?

  • alert 弹框

    • 确认
      driver.switch_to.alert.accept()
    • 取消
      driver.switch_to.alert.dismiss()
    • 在弹出框输入内容
      driver.switch_to.alert.send_keys(“输入数据”)
  • window 弹框

    • win32gui
    • Autolt

driver.quit()和driver.close()的区别?

  • driver.close()仅关闭当前用户正在操作的页面
  • driver.quit()关闭整个浏览器,关闭所有的页面

Selenium中如何保证操作元素的成功率或者稳定性?

全部答案,文末关注公众号查看

如何提高selenium脚本的执行速度?

全部答案,文末关注公众号查看

自动化测试使用过分布式吗?如何实现的?

全部答案,文末关注公众号查看

webdriver client 工作原理?

全部答案,文末关注公众号查看

什么是POM,为什么要使用?

全部答案,文末关注公众号查看

在你做自动化过程中,遇到了什么问题吗?

全部答案,文末关注公众号查看

你的自动化用例的执行策略是什么?

全部答案,文末关注公众号查看

自动化测试的优势是什么?

全部答案,文末关注公众号查看

说一下开展自动化工作的主要流程是怎样的?

全部答案,文末关注公众号查看

在制定自动化测试计划的需要考虑哪些方面?

全部答案,文末关注公众号查看

你自动化测试时关注的一些指标?

全部答案,文末关注公众号查看

你们公司自动化测试用例大概多少条?覆盖率多高?

全部答案,文末关注公众号查看

你们公司开展自动化测试遇到一些什么问题?

全部答案,文末关注公众号查看

以上内容纯属个人理解,如有不足,欢迎各位大神指正,转载请注明出处!

如果觉得文章不错,欢迎关注微信公众号,微信公众号定期推送相关测试技术文章
个人微信号

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章           查看所有文章
加:2022-03-15 22:56:38  更:2022-03-15 22:58:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:17:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码