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 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 某大厂面试题Selenium Web自动化笔记 -> 正文阅读

[开发测试]某大厂面试题Selenium Web自动化笔记

Selenium是一款基于Web功能测试的自动化测试框架,是Web功能自动化测试的首选。

本次主要基于Web功能自动化中常见问题,涉及到的代码示例以python语言为例。Selenium官网上有java、python、Csharp、Ruby、javascript、Kotlin等多种语言实现。

?笔试/面试中常见技术要点 —— Selenium Web自动化相关知识点技能

01.Selenium中有哪些不同类型的定位器?

答:定位器可以看作一个地址,用于在网页中唯一标识一个页面元素,为了准确地识别Web元素,Selenium中有8种不同的定位方式:ID;ClassName;Name;TagName;LinkText;PartialLinkText;Xpath;CSS Selector。

1.1、如何去定位页面上动态加载的元素?

-?触发动态加载元素的事件,直至动态元素出现,进行定位。

动态元素有2种情况,一个是属性动态,比如id是动态的,定位时那就不要用id定位。还有一种情况动态的,那就是这个元素一会在页面上方,一会在下方,飘忽不定的动态元素,定位方法一样按F12,根据元素属性定位(元素的tag、name的步伐属性是不会变的,动的只是class属性和styles属性)。

1.2、如何去定位属性动态变化的元素?

- xpath或者css通过同级、父级、子级进行定位

02.什么是XPath?

答:元素定位方式的一种,根据XML路径来定位Web元素,使用XPath定位元素的基本原理是在整个页面的各个元素间进行遍历,从而使用户能根据与当前元素关联的其他元素来确定当前元素的相对/绝对位置。

Xpath中“ /”和“ //”的意义如下:

(1)“ /”: 用于创建具有绝对路径的Xpath,即xpath从文档根节点/起始节点开始;

(2)“ //”: 用于创建具有相对路径的Xpath,即xpath从文档中的任何位置开始(非根节点)。

03.WebDriver启动浏览器的脚本(列举不同类别的浏览器驱动)?

答:以下语法可用于启动浏览器:

WebDriver driver =new FirefoxDriver();

  WebDriver driver =new ChromeDriver();

04.WebDriver提供哪些常见类型的驱动程序?

答:WebDriver中常见驱动程序有(这部分建议在面试前查阅一下官网,做到实时同步更新):

  · FirefoxDriver

  · InternetExplorerDriver

  · ChromeDriver

  · SafariDriver

  · OperaDriver

  · AndroidDriver

05.WebDriver中有哪些不同的等待类型?

  答:Selenium WebDriver共有两类等待:

  (1)隐式等待:在整个测试脚本中,每个连续测试步骤/命令间设置默认等待时间(例如10秒)。因此,要执行后续测试步骤,需等待前一个测试步骤/命令执行完毕后,再经过10秒时,才能继续下一步。

  (2)显式等待:与隐式等待不同,显式等待仅适用于特定实例, 用于中止当前执行,直到满足特定条件的元素出现为止(在允许的时间内)。

  06.driver.close() 和driver.quit() 有什么区别?

  答:此二者区别如下:

  · driver.close() :关闭用户当前正在使用的Web浏览器窗口,即WebDriver当前正在访问的窗口。.close() 方法既不需要任何参数,也无任何返回值;

  · driver.quit() :不同于close(),quit()方法用于关闭程序已打开的所有窗口。该方法也不需要任何参数,也无任何返回值。

07.WebDriver可以测试移动应用程序吗?

  答:由于WebDriver是基于Web的测试框架,因此无法测试移动应用程序(APP),移动APP测试可以选择Appium。

08.如何使用Selenium输入文本框?

  答:使用sendKeys(“XXXXXX”)在文本框中输入字符串,例如:

  WebElement username = drv.findElement(By.id(“电子邮件”));

  username.sendKeys(“ sth”);

09.如何查找元素是否显示在屏幕上?

  答:WebDriver通过isDisplayed(), isSelected(), isEnabled(),这三种方法判断Web元素的可见性,这类方法将返回结果是布尔类型;Web元素可以是按钮,下拉框,复选框,单选按钮,标签等。

  (1)isDisplayed():

  boolean b1 = driver.findElement(By.id(“XXX”)).isDisplayed();

  (2)isSelected():

  boolean b2 = driver.findElement(By.id(“XXX”)).isSelected();

  (3)isEnabled():

  boolean b3 = driver.findElement(By.id(“XXX”)).isEnabled();

10.如何获取Web元素中的文本?

  答: Get方法用于获取指定Web元素内部文本,此方法不需要传递任何参数,直接调用即可,它返回的是字符串值。该方法常用于验证页面显示的消息,标签,错误信息等是否和预期匹配。

  String Text = driver.findElement(By.id(“XXX”)).getText();

11.如何获取下拉菜单中的值?

  答: 通过WebDriver中Select类来选择下拉列表中的值:

  (1)通过selectByValue(“XXX”):

  Select selectByValue =new Select(driver.findElement(By.id(“某id”)));

  selectByValue.selectByValue(“某选项”);

  (2)通过selectByVisibleText(“XXX”):

  Select selectByVisibleText =new Select (driver.findElement(By.id(“某id”)));

  selectByVisibleText.selectByVisibleText(“某选项”);

  (3)通过selectByIndex(X):

  Select selectByIndex =new Select(driver.findElement(By.id(“某id”)));

  selectByIndex.selectByIndex(3);

12.Selenium中页面导航命令有哪些不同类型?

  答:Selenium中常见的页面导航操作如下:

  (1)driver.back() – 回上一页,回到Web浏览器历史记录中的上一个网页。

  (2)driver..forward() – 去下一页, 基于浏览器的历史记录导航到下一个网页。

  (3)driver.refresh() – 刷新当前页面。

  (4)driver.get() – 开启新的Web浏览器窗口,并导航到指定的URL。

13.如何使用linkText单击超链接?

  答:可以通过链接文本的全包含和部分包含来获取该链接的定位 。

  (1)通过链接文本找到该元素,单击该元素,用户将被重定向到相应的页面;

  driver.findElement(By.linkText(“超链接的内容”)).click();

  (2)通过“部分包含链接文本”单击超链接,根据链接子字符串查找元素,找到后单击:

  driver.findElement(By.partialLinkText(“部分链接内容”)).click();

  注:partialLinkText(“XXX”)用于查找具有指定子字符串的web元素

14.如何处理frame?

  答: iframe类似于网页中的嵌套,及一个页面中嵌套多个其他完整的页面;在Selenium中基于iframe的操作如下:

  (1)通过id定位iframe

  driver.switchTo().frame(“目标frame的id“);

  (2)通过tagName定位iframe

  driver.switchTo().frame(driver.findElements(By.tagName(“iframe”).get(0));

  (3)通过index定位iframe [frame(index)]

  driver.switchTo().frame(0);

  (4)通过frame的名字定位[frame(Name of Frame)]

  driver.switchTo().frame(“name of the frame”);

15.findElement()和findElements()分别用于何种场合?

  答:单一匹配和多匹配的区别;

  (1)findElement() :用于查找当前网页中与指定定位中,可以匹配的第一个元素,值得一提注意的是,仅返回第一个匹配上的元素;

  WebElement element =driver.findElements(By.xpath(“//指定路径”));

  (2)findElements() —— 用于查找当前网页中与指定定位匹配的所有元素,所有匹配的元素都将被提取并存储在WebElements列表中;

  List <WebElement> elementList =driver.findElements(By.xpath(“//指定路径”));

16.如何在列表中找到多个Web元素?

  答:在进行Web测试时,我们经常会遇到一系列相同类型的元素,例如以有序/无序列表形式排列的多个超链接,图像等,要定位一系列同类型的元素,在JAVA中可以通过WebElement List来完成;

  假定以下代码用来循环点击页面中有序/无序列表包含的每个相同类型的超链接元素:

  Sample code:

  #创建一个列表,专门用于存放WebElement类型的对象

 ? ? elementList = driver.findElements(By.xpath("//指定路径"));

  # 遍历列表

  for? i in range(element.length):

  #点击列表中当前元素链接,进入链接所在页面

  ? ?serviceProviderLinks.get(i).click()

 ?  #回到前一页

 ?  driver.back()

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 12:05:09  更:2021-10-15 12:05:23 
 
开发: 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 2:27:55-

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