Selenium面试题

Selenium面试题NO.1Selenium是什么是一个开源的web自动化测试的框架,支持多种编程语言,支持跨浏览器平台进行测试NO.2Selenium中有哪些验证点?Selenium主要有三种验证点检查页面标题检查某些文字检查某些元素(文本框,下拉菜单,表等)NO.3你如何从Selenium连接到数据库?Selenium是一个WebUI自动化工具。它不提供任何API来建立数据库连接。这取决于你使用Selenium进行自动化的编程语言。NO.4如何提高selenium脚本的执行速度?1.优

大家好,又见面了,我是你们的朋友全栈君。

NO.1 Selenium是什么

是一个开源的web自动化测试的框架,支持多种编程语言,支持跨浏览器平台进行测试

NO.2 Selenium中有哪些验证点?

Selenium主要有三种验证点

  • 检查页面标题
  • 检查某些文字
  • 检查某些元素(文本框,下拉菜单,表等)

NO.3 你如何从Selenium连接到数据库?

Selenium是一个Web UI自动化工具。它不提供任何API来建立数据库连接。这取决于你使用Selenium进行自动化的编程语言。

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

  • 1.优化测试用例。设置等待时间的时候,少用sleep,尽量不用implicitly_wait,多用显式等待方法;

  • 2.减少不必要的操作步骤。如经过三四步才能打开要测试的页面的话,可以直接通过网址来打开;

  • 3.中断页面加载。如果加载的内容不影响我们测试,就设置超时时间,中断页面加载;

  • 4.使用Selenium grid,通过testNG实现并发执行。 在编写测试用例的时候,实现松耦合,然后再服务器允许的情况下,尽量设置多线程实现并发运行。

NO.5 如何验证多个页面上存在的一个对象?

可以使用下面的Selenium命令来检查:
assertTrue(selenium.isElementPresent(locator));

NO.6 selenium中如何判断元素是否存在?

没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素+异常捕获的方式判断

NO.7 selenium中hidden或者是display = none的元素是否可以定位到?

不可以,想点击的话,可以用js去掉dispalay=none的属性

NO.8 selenium中如何保证操作元素的成功率?

保证操作元素的成功率,也就是说如何保证我点击的元素一定是可以点击的?

  • 1.首先通过封装find方法,实现wait_for_element_ispresent(WebDriverWait)

  • 2.在对页面进行click之前,先滚动到该元素(通过Js封装),避免在页面未加载完成前或是在下拉之后才能显示。

  • 3.不同方式进行定位,与expected_conditions判断方法封装,循环判断页面元素出现后再操作;

  • 4.开发人员规范开发习惯,如给页面元素加上唯一的name,id等。

NO.9 Selenium有几种定位方式?如何选择?

Selenium有八种定位方式:

  • 与name有关的有三种:name、class_name、tag_name

  • 与link相关的有两种:link_text、partitial_link_text

  • 与id有关:id

  • 全能选手:xpath、css_selector

如果存在id,我一定使用Id,因为简单方便,定位最快。
其次是Xpath,因为很多情况下html标签的属性不够规范,无法唯一定位。Xpath是通过相对位置定位
如果没有,那么CSS定位器应该被优先考虑,因为在大多数现代浏览器中,它们的评估速度比XPath更快。

NO.10 如何去定位页面上动态加载的元素?

首先触发动态事件,然后再定位。如果是动态菜单,则需要层级定位。——JS实现(对动态事件封装)

NO.11 如何去定位属性动态变化的元素?

先去找该元素不变的属性,要是都变,那就找不变的父元素,用层级定位(以不变应万变)
属性动态变化也就是指该元素没有固定的属性值,可以通过:
JS实现,
通过相对位置来定位,比如xpath的轴,paren/following-sibling/percent-sibling

NO.12 点击链接以后,selenium是否会自动等待该页面加载完毕?

不会的。所以有的时候,当selenium并未加载完一个页面时再请求页面资源,则会误报不存在此元素。所以首先我们应该考虑判断,selenium是否加载完此页面。其次再通过函数查找该元素。

NO.13 如何在页面加载成功后验证元素的存在?

它可以通过下面的代码行来实现。
只需一点时间(以秒为单位)来检查元素,如下所示:

public void waitForElementPresent(String element, int timeout) throws Exception { 
   
for (int second = 0;; second++) { 
   
if (second >= timeout)
fail(“Timeout. Unable to find the Specified element” + element);
try { 
   
if (selenium.isElementPresent(element))
break;
} catch (Exception e) { 
   
}
Thread.sleep(1000);
}}

NO.14 怎样去选择一个下拉框中的value=xx的option?

1.select类里面提供的方法:select_by_value(“xxx”)
2.xpath的语法也可以定位到

NO.15 如何在标题菜单的子菜单项上执行鼠标移动操作?

应该首先移动菜单标题,然后移至弹出菜单项并单击它。不要忘记在最后调用actions.perform() 。

NO.16 如何在定位元素后高亮元素(以调试为目的)?

重置元素属性,给定位的元素加背景、边框

NO.17 XPath中使用单斜杠和双斜杠有什么区别?

如果XPath是从文档节点开始,它将允许创建“绝对”路径表达式。
例如 “/ html / body / p”匹配所有的段落元素。

如果XPath在文档中的任意位置开始进行选择匹配,那么它将允许创建“相对”路径表达式。
例如 “// p”匹配所有的段落元素。

NO.18 什么是XPath?什么时候应该在Selenium中使用XPath?

XPath是一种在HTML / XML文档中定位的方法,可用于识别网页中的元素。

如果没有与页面上的元素相关联的名称/ ID,或者名称/ ID的一部分是常量,则必须使用XPath。

绝对路径用 - / 单斜杠
相对路径用 - // 双斜杠
ID,类,名称也可以用于XPath :
//input[@name=’q’]
//input[@id=’lst-ib’]
//input[@class=’ lst’]
如果id / name / class的一部分是常量 :
//input[contains(@id,’lst-ib’)

NO.19 什么是Selenium的CSS定位器策略?

CSS位置策略可以与Selenium一起使用来定位元素,它使用CSS定位方法

绝对路径用 - (空格符号)
相对路径用 - >表示
ID,类,名称也可以用于XPath:
css=input[name=’q’]
css=input[id=’lst-ib’] or input#lst-ib
css=input[class=’lst’] or input.lst
如果id / name / class只有一部分是常量:
css=input[id*=’lst-ib’)]
使用内部文本的元素位置策略:
css = a:contains(‘log out’)

NO.20 webdriver可以用来做接口测试吗?

不可以,webdriver是专门做web的UI自动化参数

NO.21 webdriver client的原理是什么?

在selenium启动以后,driver充当了服务器的角色,跟client和浏览器通信,client根据webdriver协议发送请求给driver。driver解析请求,并在浏览器上执行相应的操作,并把执行结果返回给client.

NO.22 webdriver的协议是什么?

WebDrive协议本身是http协议,数据传输使用json
启动浏览器的时候用到的是http协议

NO.23 如何处理WebDriver中的AJAX控件?

AJAX代表异步JavaScript和XML。它不依赖于创建有效的XML所需的打开和关闭标签的额外开销。大部分时间WebDriver自动处理Ajax控件和调用。如果不能处理的话,可以按照下面的方式来处理。

Waiting for Ajax Control
WebElement AjaxElement = (new WebDriverWait(driver,
10)).until(ExpectedConditions.presenceOfElementLocated(By.("")));

NO.24 在处理多个弹出窗口的机制是什么?

可以使用命令getWindowHandles()来处理多个弹出窗口。
然后将所有窗口名称存储到Set变量中并将其转换为数组。
接下来,通过使用数组索引,导航到特定的窗口。
driver.switchTo().window(ArrayIndex);

NO.25 你如何处理使用Selenium的Ajax控件?

假如一个文本框是一个Ajax控件,当我们输入一些文本时,它会显示自动建议的值。
处理这样的控件,需要在文本框中输入值之后,捕获字符串中的所有建议值;然后,分割字符串,取值就好了。

NO.26 隐式等待与显式等待有什么不同?

隐式等待是设置的全局等待,分为

  • 1、页面加载超时等待 ;
  • 2、页面元素加载超时;
  • 3、异步脚本超时。

如果是页面元素超时,设置等待时间,是对页面中的所有元素设置加载时间。

隐式等待是其实可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。

显式等待只是用于特定搜索的一个计时器。它的可扩展性更强,你可以设置它来等待任何条件。通常情况下,可以使用一些预先构建的条件来等待元素变得可点击,可见,不可见等,或者只是编写适合需求的条件。

NO.27 如何解决IE中的SSL认证问题?

打开浏览器后添加下面的命令

driver.navigate().to(“javascript:document.getElementById(‘overridelink’).click());
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151416.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • maven工程配置私库「建议收藏」

    maven工程配置私库「建议收藏」为什么要配置私库?从中央仓库下载速度缓慢,而且有些jar包是公司私有的包不存在在中央仓库当中,所以我们需要配置私库。首先去修改setting文件,在maven文件夹下的conf文件夹当中<?xmlversion=”1.0″encoding=”UTF-8″?><settingsxmlns=”http://maven.apache.org/SETTINGS/1.0.0″…

  • 免费下载付费文档_原创力文档赚钱容易吗

    免费下载付费文档_原创力文档赚钱容易吗最近我才发现,想要下载个文档,是真的不容易呀!可以让你随便复制粘贴和下载的文档,质量都不怎么样!优质的文档,需要下载券才能下载!说好的「让每个人平等地提升自我」呢?好在机智的我,最终发现了免费下载文档的奥秘,今天就分享出来给大家看,当做福利了,低调点用哦,不要让太多人知道!VVV文档在线导出工具http://wenku.baiduvvv.com/doc/之前很常用的一个在线文库下载网站突然要收费了…

    2022年10月27日
  • mysql docker 端口号_如何修改 docker 容器中 mysql 的端口号

    修改docker中MySQL配置文件,在mysqld项目下新增port=3307配置[mysqld]port=3307federatedmax_connections=200max_allowed_packet=64Mpid-file=/var/run/mysqld/mysqld.pidsocket=/var/run/mysqld/mysqld.sockdatadir=…

  • pycharm安装dlib失败_python3.8.0安装教程

    pycharm安装dlib失败_python3.8.0安装教程1.下载dlib-19.19.0-cp38-cp38-win_amd64.whl2.通过cmd,进入控制台,通过cd…的方式跳转当前目录到刚才下载的dlib-19.19.0-cp38-cp38-win_amd64.whl文件所在目录3.在控制台输入pipinstalldlib-19.19.0-cp38-cp38-win_amd64.whl,则会出现如图效果:则dlib库安装成功,启动Pycharm,输入importdlib导入即可使用…

  • 域名url转发怎么设置_url和域名

    域名url转发怎么设置_url和域名URL转发技术就是将该域名的网站访问请求,通过浏览器端技术,转向到另外一个网站。域名URL转发分为url显性转发和URL隐性转发这里以万网域名为例教你如何设置显性url转发和隐性URL转发。

    2022年10月18日
  • HADOOP生态圈简介

    HADOOP生态圈简介1.hadoop生态概况Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。具有可靠、高效、可伸缩的特点。Hadoop的核心是YARN,HDFS和Mapreduce下图是hadoop生态系统,集成spark生态圈。在未来一段时间内,hadoop将于spark共存,hadoop与s…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号