资深和新手的大elenium面试问答

下面的Java Selenium问题指南涵盖了100个最重要的Selenium自动化面试问题,包括简单的Selenium Java面试问题以及带答案的Selenium自动化测试面试问题。本文包含了面向新同学的所有Selenium基本问题,以及针对有经验的应聘者的Selenium面试问题和答案,帮助面试者做准备。

什么是Selenium?Selenium是由什么组成的?

什么是Selenium 2.0?

什么是Selenium 3.0?

如何找到使用Selenium的元素?

列出Selenium支持的测试类型?

解释什么是Selenium中的断言,以及断言的类型是什么?

X-PATH的用途是什么?

解释一下单劈开和双劈开在XPath上的区别?

列出使用Selenium所面临的技术挑战?

键盘输入和键盘命令有什么不同?

Selenium是一套用于自动化Web测试的工具。它由以下几个部分组成

Selenium IDE(集成开发环境)它是一个录制和回放的工具,它是一个Firefox插件

Webdriver和RC:它提供各种语言的API,比如Java、.NET、PHP等。大多数浏览器都可以使用Webdriver和RC。

在Selenium 2.0中,Web测试工具Selenium RC和WebDriver被整合到单个工具中

什么是Selenium 2.0

Selenium 3.0是Selenium的最新版本。它已经发布了Selenium 3.0的两个测试版,几乎没有以下变化:

以下是Selenium 3.0中添加的几个新功能

在Selenium中,网页中的每个对象或控件都被称为元素,在网页中查找元素有不同的方法,它们是

ID号

名字

标签

属性

CSS

链接文本

PartialLink文本

XPath等

对于基于Web的应用程序测试,可以使用Selenium

可以支持的测试类型有

a)功能测试,了解有关功能测试的更多信息。

b)数据回归

对于发布后的持续集成验证,可以使用自动化工具

a)Jenkins

b)Hudson

c)Quick Build

d)-CruiseCont

断言被用作重要的验证点。它验证断言类型的状态是否为“Assert”、“Verify”和“waitFor”。

X-PATH用于在网页中查找WebElement。它在标识动态元素时也很有用。

单曲劈开‘/’

单劈开(/)从单据节点开始选择

它允许创建‘绝对’路径表达式

双劈开‘//’

双劈开(//)开始选择匹配文档中的任意位置

它允许创建“相对”路径表达式

Selenium的技术挑战是

Selenium仅支持基于Web的应用程序

它不支持位图比较

与HP UFT等商业工具相比,没有供应商对工具的支持

由于Selenium中没有对象存储库的概念,使得对象的可维护性变得很困难

typeKeys() 将触发JavaScript事件,而 .type() 不会。Type 使用JavaScript语言填充Value属性,而 .typekeys() 类似于实际的用户输入

Assert:Assert允许检查元素是否在页面上。测试换句话说,测试将在检查失败的点终止。

VERIFY:VERIFY命令将检查元素是否在页面上,如果不在,则测试将继续执行。*在验证中,即使有任何测试失败,所有命令都将保证运行。

在Java中,可以将一种特殊形式的语法元数据添加到Java源代码中,这称为注解。

Test

Before

After

Ignore

BeforeClass

AfterClass

RunWith

要单击元素的特定部分,需要使用clickAt命令。ClickAt命令接受元素定位器和x,y坐标作为参数-clickAt(locator,cordString)

它支持C#、PHP、Java、Perl、Phython

它支持不同的操作系统,如Windows、Linux和Mac OS

它有强大的方法来定位元素(XPath、DOM、CSS)

它拥有由谷歌支持的高度开发者社区

Selenium比qtp更受欢迎,因为

Selenium是开放源码的,而qtp是商业工具。

Selenium专门用于测试基于Web的应用程序,而QTP也可用于测试客户端服务器应用程序

Selenium在Windows、Mac、Linux等操作系统上支持Firefox、IE、Opera、Safari等,而QTP仅限于Windows上的Internet Explorer。

Selenium支持许多编程语言,如Ruby、Perl、Python,而QTP仅支持VB脚本

必须在Selenium中传递的四个参数是

主机

端口号

浏览器

URL

两者都会延迟执行的速度。

如果使用的是速度较慢的Web应用程序,这个命令非常有用

“同源策略”是出于安全原因而引入的,它确保网站的内容永远不会被来自另一个网站的脚本访问。*根据该策略,浏览器中加载的任何代码只能在该网站的域内运行。

为了避免使用“同源策略”代理注入方法,在代理注入模式下,Selenium Server充当客户端配置的HTTP代理,该代理位于浏览器和被测应用程序之间,然后将AUT屏蔽在一个虚构的URL下

提升权限的目的类似于代理注入,允许网站做一些通常不允许的事情,通过使用这些浏览器模式,Selenium Core可以直接打开AUT,也可以读/写其内容,而不需要通过Selenium RC服务器传递整个AUT。

可以在元素上使用“submit”方法提交表单-

或者,也可以在构成的元素上使用单击方法

TestNG是一个基于JUnit和NUnit的测试框架,用于简化从单元测试到集成测试的广泛测试需求。而使其成为高效测试框架的功能是

支持注解

支持数据驱动测试

灵活的测试配置

能够重新执行失败的测试用例

显式等待:它是一次性的,用于特定的搜索。

这将返回frame列表。

将需要切换到每一frame和搜索我们想要的定位器。

findElement()

它使用给定的“定位机制”查找当前页面中的第一个元素。

findElements()使用给定的“定位机制”查找当前页面中的所有元素。

与Selenium链接的JUnits注解包括

@Before public void method() -每次测试前都会执行Method(),该方法可以准备测试

@Test public void method() -@Test标识该方法为测试方法环境

@After public void method() -要在使用此注解之前执行方法,测试方法必须以@BEFORE开头

Datadriven框架:在这个框架中,测试数据被分离并保存在测试脚本之外,而测试用例逻辑驻留在测试脚本中。测试数据从外部文件(Excel文件)中读取并加载到变量中,变量用于输入值和验证值。

关键字驱动框架:关键字驱动框架需要开发独立于测试自动化的数据表和关键字。在关键字驱动测试中,被测应用程序的功能记录在表格中,并为每项测试提供逐步说明。

使用url传递用户名和密码

//从元素获取测试并存储在文本变量中

//断言预期的文本

对象存储库是任何UI自动化中必不可少的实体,它允许测试人员将脚本中使用的所有对象存储在一个或多个集中位置,而不是分散在测试脚本中。

Selenium Grid将测试发送到集线器。这些测试被重定向到Selenium Webdriver,它启动整个测试套件,允许并行运行测试。

是。但不如LoadRunner这样的专用性能测试工具有效。

如果使用Selenium-WebDriver,则不需要Selenium Server,因为它使用完全不同的技术

Selenium Server提供Selenium RC功能,该功能用于Selenium 1.0向后兼容

Selenium Web Driver使用每个浏览器的本地支持直接调用浏览器以实现自动化,而Selenium RC需要Selenium服务器将Javascript注入浏览器

当需要以下方面的改进支持时,应使用WebDriver

处理多个框架、弹出窗口、多个浏览器窗口和告警

页面导航和拖放

基于Ajax的UI元素

多浏览器测试,包括Selenium 1.0不能很好支持的浏览器改进功能

注入功能的主要限制是“findElement”命令可能无法按预期工作。

要使用Selenium Web驱动程序在页面中查找损坏的图像,执行以下操作

获取XPath并使用标记名获取页面中的所有链接

在页面中,单击每个链接

在目标页面标题中查找404/500

要处理Web驱动程序中的颜色,可以使用

使用 getCssValue(arg0) 函数通过将‘color’字符串作为参数发送来获取颜色

可以使用以下命令来存储使用Web驱动程序的文本框形式的值

数字:它根据其(从零开始的)索引选择Frame

名称或ID:按名称或ID选择框架

先前找到的WebElement:使用其先前定位的WebElement选择框架

在Selenium Web驱动程序中有5个不同的异常,它们是

WebDriverException

NoAlertPresentException

NoSuchWindowException

NoSuchElementException

TimeoutException

可以使用以下命令执行双击操作

可以使用type命令在上传文件的文件输入框中键入。然后,使用Java中的“Robot”类来实现文件上传。

要在HTML框架上引入控件,可以使用“switchTo”框架方法-

要指定frame,可以使用索引号

这将在名为-“frame Name”的4个frame上带来控制 子框架名称“parentFrame”

getwindowhandles() :用于获取所有打开浏览器的地址,返回类型设置为<String>

getwindowhandle() :获取控件所在的当前浏览器地址,返回类型为字符串

要使用方法 defaultContent() 从frame切换回来,执行以下操作

不同类型的定位器有

为了显示常量字符串,可以使用命令echo<常量字符串>

如果要显示变量的值,可以使用诸如echo${Variable Name}这样的命令

恢复方案取决于使用的编程语言。如果正在使用Selenium WebDriver Java测试中的“try catch”

要遍历测试脚本中的选项,可以循环使用编程语言的功能,例如,要在文本框中键入不同的测试数据,可以使用Java中的“for”循环

//数组中的测试数据采集

string[]testData={“test1”,“test2”,“test3”};

//遍历每个测试数据

有三种方法

Junit:在Ant的帮助下

使用我们自己的自定义报告,使用XSL JAR将XML内容转换为HTML

创建html测试报告有三种方式

JUnit:在Ant的帮助下

使用我们自己的自定义报告,使用XSL JAR将XML内容转换为HTML

在Selenium IDE中插入断点

右键单击Selenium IDE中的命令,选择“切换断点”

按键盘上的“B”键,然后在Selenium IDE中选择命令

在Selenium IDE中可以设置多个断点

从要逐步执行测试的位置插入断点

运行测试用例

在给定的断点处,执行将暂停

要继续下一条语句,单击蓝色按钮

单击“Run”(运行)按钮,一次继续执行所有命令

Selenese是用于运行测试的Selenium命令集

有三种类型的Selenese

Actions:用于执行与目标元素的操作和交互

Assertions(断言点):用作检查点

Accessors(访问器)用于存储变量中的值

Selenium IDE的局限性

不存在异常处理

Selenium IDE仅使用HTML语言

使用IDE无法读取外部数据库

无法从.txt、.xls等外部文件读取

不能像IF、ELSE、SELECT语句那样执行条件语句或分支语句

Selenium IDE既可以作为弹出窗口打开,也可以在侧栏中打开

在Selenium中,主要使用4个定位器

X-path locators

Css locators

Html id

Html name

在Selenium IDE中,可以使用Java脚本生成随机数

type

css=input#s

And for

type

css=input#s

javascript{new Date()}

可以使用Selenium IDE的Format选项将测试转换为另一种编程语言

可以使用“storeTable”命令

示例存储来自html表的单元格0,2的文本

storeTable

Css=#table 0.2

textFromCell

当定位器已更改且Selenium IDE无法找到元素时

当网页上没有出现等待访问的Element Selenium IDE且操作超时时

当元素Selenium IDE尝试访问时,未创建

从要逐步执行的位置插入断点

运行测试用例

在给定的断点处,执行将暂停

要继续执行下一步,单击蓝色按钮

要一次运行命令,单击运行按钮

在Selenium IDE中,可以通过两种方式执行单行命令

右键单击Selenium IDE中的命令,选择“Execute this command”(执行此命令

在Selenium IDE中选择命令后,按键盘上的“X”键

在Selenium中,IDE源代码视图以XML格式显示脚本

可以通过两种方式设置Selenium IDE

按键盘上的“S”键,然后在Selenium IDE中选择命令

在Seleniun IDE中,右键单击命令并选择“Set/Clear Start Point”(设置/清除起始点)

要测试可以使用Selenium IDE的“查找按钮”的定位器,当单击它时,将在屏幕上看到一个高亮显示的元素,前提是元素定位器是正确的,否则将显示一条错误消息

正则表达式是用于描述搜索模式的特殊文本字符串。在Selenium IDE中,正则表达式可以与关键字-regexp:一起使用,作为值的前缀,需要为期望值包括模式。

如果想“扩展”Selenium函数库提供的默认功能,可以创建一个Core扩展。甚至可以下载由其他Selenium爱好者创建的现成的Core扩展。

可以使用命令selectWindow在窗口之间切换。此命令使用Windows的标题来标识要切换到哪个窗口。

可以使用verifyElementPositionLeft&verifyElementPositionTop。它分别从页面左侧和顶部对元素的位置进行像素比较

可以使用storeAlert命令,该命令将获取告警弹出消息并将其存储在变量中。

Selenium IDE在浏览器支持和语言支持方面存在限制。通过使用Selenium,可以降低RC的限制。

在不同的平台和用于自动化Web应用程序的不同Web浏览器上,Selenium RC与Java、C#、Perl、Python等语言一起使用

Selenium RC是基于Java的,可以使用任何可以与Web应用程序交互的语言

使用服务器,可以绕过该限制并运行针对任何Web应用程序运行的自动化脚本

Selenium IDE很多功能不直接支持,比如条件语句、迭代、测试结果的记录和报告、意外错误处理等等,因为IDE只支持HTML语言,所以使用Selenium RC来处理这些问题,因为它支持Perl、Ruby、Python、PHP等语言,使用这些语言我们可以编写程序来实现IDE问题。

Selenium RC和WebDriver的主要区别在于,Selenium RC在加载页面时将javascript函数注入浏览器。另一方面,Selenium Webdriver使用内置支持的浏览器驱动

RC的优势在于

可以从.xls、.txt等读取数据或将数据写入.xls、.txt等

它可以处理动态对象和基于AJAX的UI元素

可以使用循环和条件来获得更好的性能和灵活性

支持多种编程语言和操作系统

对于任何启用Java脚本的浏览器,都可以使用Selenium RC

库和类的集合称为Framework,当测试人员必须自动化测试用例时,它们非常有用。NUnit、JUnit、TestNG、Bromine、RSpec、unittest是RC中可用的一些框架。

为了在RC中处理弹出窗口,使用selectWindow方法选择弹出窗口,windowFocus方法让控件从当前窗口变为弹出窗口,并根据脚本执行操作

除了来自js的“同源策略”限制外,Selenium还受到限制,不能执行浏览器之外的任何内容。

可以,当不使用Java测试框架时也是可以的。如果使用的是“parallel=test”属性,可以将测试设置为并行执行,并且可以定义两个不同的测试,每个测试使用不同的浏览器,而不是使用Java测试框架。

如果希望针对不同的服务器和客户端平台实现完全自动化,那么需要一种从命令行进程调用测试的方法,报告可以告诉发生了什么,并且可以灵活地创建测试套件。TestNG提供了这种灵活性。

要捕获Selenium Server中的服务器端日志,可以使用命令

要在文本框中输入值,可以使用命令 sendkeys()

要使用Selenium标识对象,可以使用

isElementPresent(String locator)

isElementPresent采用定位器作为参数,如果找到,则返回布尔值

断点:当在代码中实现断点时,执行将立即停止。这有助于验证代码是否按预期工作。

起始点:Startpoint指示应该开始执行的点。当想要从代码中间或断点运行测试脚本时,可以使用Startpoint。

与Java相比,Python更适合与Selenium一起使用的几点是,

与Python程序相比,Java程序的运行速度往往较慢。

Java使用传统的大括号开始和结束块,而Python使用缩进。

JAVA使用静态类型,而Python是动态类型的。

与Java相比,Python更简单、更紧凑。

在Selenium Webdriver中处理Ajax调用所面临的挑战包括

使用“暂停”命令处理AJAX调用并不完全可靠。取而代之的是,“waitfordition”在测试Ajax应用程序时会更有帮助。

给予开发人员修改Ajax应用程序的完全自由使得测试过程具有挑战性

创建自动测试求对于测试工具来说可能很困难,因为这样的Ajax应用程序通常使用不同的编码或序列化技术来提交POST数据。

IntelliJ是一种IDE,可以帮助为Selenium编写更好、更快的代码。IntelliJ可以用在Java bean和Eclipse的选项中。

可以通过两种方式自定义TestNG报告。

使用ITestListener接口

使用iReporter界面

要生成pdf报告,需要Java API IText。

在Selenium WebDriver中,监听者“监听”Selenium脚本中定义的事件并相应地进行操作。Webdriver侦听器和TestN监听器。

TestNG中的监听器类型是,

IAnnotationTransformer

IAnnotationTransformer2

IConfigurable

IConfigurationListener

IExecutionListener

IHookable

IInvokedMethodListener

IInvokedMethodListener2

IMethodInterceptor

IReporter

ISuiteListener

ITestListener

期望的功能是存储浏览器属性(如浏览器名称、浏览器版本、浏览器驱动程序在系统中的路径等)的一系列键/值对,以确定浏览器在运行时的行为。

对于Selenium来说,

可以用来配置Selenium WebDriver的驱动实例。

当想要在具有不同操作系统和版本的不同浏览器上运行测试用例时。

对于Selenium Webdriver中的数据库测试,需要JDBC(Java Database Connectivity,Java数据库连接)API。它允许执行SQL语句。

Selenium设计用于在不同的浏览器上自动运行基于Web的应用程序。但是处理无GUI或者非HTML的弹出窗的时候需要AutoIT。

在使用Selenium时,需要会话处理。这是因为,在测试执行期间,Selenium WebDriver必须与之交互,因此要避免这种情况,需要进行会话处理。

使用Git Hub进行Selenium检测的优势在于

多人在处理同一项目时,可以同时更新项目详细信息并通知其他团队成员。

Jenkins可以帮助定期从远程存储库构建项目。这有助于跟踪失败的构建。

THE END
0.体育比赛规则[31项]跳高可分为三种方式: 剪式:最安全,但可跳高度为最低。 滚式 背越式:可跳高度为最高,现时奥运比赛普遍采用。 撑杆跳高 撑杆撑竿跳高在刚成为田径项目时,所使用的撑竿是以木材制造。后来于20世纪,人们发现竹竿不仅比较轻,而且弹性也比较高。自此之后,人们以竹竿参赛,成绩不断提升。其后,合金撑竿的出现取代了之前的竹竿 jvzq<84yyy4489iqe0ipo8hqpvkov8621373587316758@6;a9797;7830yivvq
1.创建线程的三种方式、线程运行原理、常见方法、线程状态1.创建线程的三种方式 1.2 使用Runnable配合Thread 1.3 通过Callable和FutureTask创建线程 2.Runnable和Thread的区别 3.Thread类源代码剖析 4.线程运行原理 4.1 栈与栈帧 4.2 线程上下文切换(Thread Context Switch) 5.Thread的常见方法 5.1 调用start 与 run方法的区别 jvzquC41dnuh0lxfp0tfv8_UC4831jwvkerf1mjvckrt1:7545?42<
2.部门日常工作管理制度(精选14篇)5、部门与部门之间的协作、沟通、配合按下列三种方式进行: (1)按正规程序。部门之间问题有正规程序的必须按程序进行,如程序受阻,发生问题的业务主管人员必须在4小时内将信息反馈给直接上级,直至部门负责人,由部门负责人报部经理,由部经理在4小时内对违犯程序者按规定进行处理,无具体规定对其按失职、渎职处理。 jvzq<84yyy4vpsx0eqs0hjsygp}bpp4i||j0497427732A983:e62@<::24ivvq
3.Springboot中@scheduled注解解析java有两种方式: 配合@Async注解 指定任务调度的线程池 6. 在Spring项目中使用@Scheduled注解,配合配置文件定义简单定时任务 在Spring的配置文件中添加定时任务相关配置: 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"jvzquC41yy}/lk:30pku1ywqitgn1;>;469gol3jvo
4.挪车打什么电话可以联系到车主,3种方式3.通过交管12123一键挪车来通知车主。不过这三种方式都不能强制达到挪车的目的,还是需要车主配合,当然大家也经历过被堵的情况,一般遇到这种情况也是会及时来挪车的。 很多车主停车时找不到停车位,只能临时在别人的车前停车。还有些车主会直接停在别人的车位里,这种行为就不太好了,毕竟固定车位的车辆随时都可能会来jvzquC41yy}/rlfwvq4dqv3ep1nk1jwvkerf1A:4728/j}rn
5.科研先“产出”财政后补助三种资助模式协同配合,从不同路径实现“先有科研结果、后有财政投入” 针对不同类型的科技活动,规定提出了三种后补助资助方式,包括事前立项事后补助、奖励性后补助和共享服务后补助,对创新财政经费支持方式、推动企业真正成为科技投入和科技创新的主体具有重要意义。 jvzquC41pg}t0:75934dp8723651:8641CXUK:9299?83964:9;:87xjvor
6.《混凝土结构工程施工规范》GB506663.混凝土配合比设计的规定; 4.混凝土搅拌的基本要求; 5.混凝土运输的基本要求; 6.混凝土制备与运输过程的质量检查。 (一)一般规定 1、混凝土制备方式的选择 我国目前混凝土制备主要有三种方式: (1)搅拌站专业化生产;(优先选用,具有资质,质量稳定,环保节能) jvzq<84llin/zqz0gf{/ew4;81g:1l:248g22=6271vbin3jvo
7.美术课家长会发言稿(通用19篇)一、高考录取上,针对艺体生,主流分类方法主要分为三种方式: 1、在文化课最低录取分数线以上,按专业课成绩由高到低投档录取; 2、在专业课最低录取分数线或合格生源中,按文化课成绩由高到低投档录取; 3、文化课与专业课按比例折合后,按合成分数由高到低投档录取(某些院校专业分和文化分直接相加,不在折合)。 jvzquC41yy}/fr~khctxgw3eqo5zcwokcpmhcx4hc{goijt135953@680jznn
8.货币政策和财政政策的关系范文这就是着名的凯恩斯需求管理理论。由此我们可以得出结论,宏观经济政策应该是相机抉择性质的,这种模式对于当前的中国经济有更大的借鉴作用。而正是财政政策和货币政策有效的协调配合,采取不同的协调模式,才构成了宏观经济调控相机选择的主要内容。 2.财政政策与货币政策常见的配合方式主要有以下几种:jvzquC41yy}/i€~qq0ipo8mcqyko1;73926/j}rn
9.Python大全笔记总结python编程笔记误会一场的技术博客使用dict()创建空字典,dict创建字典的三种方式 dict({key:value}) dict([(key,value),(key,value)]) dict(key=value,key=value) 1. 2. 3. 字典的key:只能是不可变类型 字典中的值可以重复,但是key是不能重复的 字典的操作方法 setdefault(key,default_value) 指定key和value,如果key存在什么都不改变 jvzquC41dnuh0>6evq4dqv4wa3833B4939<12B
10.公差配合实训总结赏析八篇技工学校传统教学模式是学科型模式,学科型模式在教学上主要讲求循序渐进,学时安排集中,主要以传授知识为主,这种传统的学习方式,学生对学习的兴趣不高,且极限配合的知识部分概念比较抽象,难于理解,学生学习起来枯燥无味,联系实际不够,学生综合运用知识的能力明显不足,在工作岗位上易造成理论与实践脱节,多数学生动手能力jvzquC41uvzl7kcdkgp0lto1jgpyns1399177mvon
11.页面导出excel的三种方式web导出excel实现本文介绍了两种纯前端实现Excel文件导出的方法,一种是利用file-saver库直接将表格数据转换为字符串并保存,另一种是通过创建a标签触发下载。还提供了一种前后端配合的方案,通过后端生成文件链接或二进制流,前端进行下载操作。同时强调了处理大量数据和身份验证时的考虑,并给出了axios配置示例。 jvzquC41dnuh0lxfp0tfv8pu9;;9494ctvodnn4fgvgjn|4347945954