30个硒webdriver面试问题,帮助您获得工作
Selenium是一种用于Web应用程序自动化测试的工具。90%的公司使用Selenium进行UI自动化。这是一个流行的选择,因为Selenium可以用许多编程语言编写,包括Java,JavaScript,C#和Python。
在这篇文章中,我们将看看重要的硒问题,以帮助你在下一次工作面试中取得好成绩。
1。硒是什么?
Selenium是一种工具,它可以自动化您在web浏览器内所能做的一切。它实现了基于web的应用程序的功能自动化,并可以在所有浏览器和平台上运行。
最后更新:2021年2月
“TOP RATED (BEST SELLER) #1 Master SELENIUM java course”-5 Million students learning worldWide with great collaboration |由Rahul Shetty.
探索课程2。这是硒套房的组件
Selenium不仅仅是一个单一的工具或实用程序。相反,它是多个测试工具的集合,称为套件。每个工具都是为满足测试和测试环境的特定标准而设计的。
套件包含以下工具集:
- Selenium IDE(集成开发环境)betwayapp下载安装- web的开源记录和回放测试自动化。这是作为插件发布到Firefox和Chrome的。
- 硒RC.(远程控制)- Selenium RC是一种服务器,允许用户以所需的编程语言构建测试脚本。它还可以通过跨越浏览器进行测试脚本。
- 硒WebDriver- Webdriver是一款完全不同的工具,具有不同优势的硒rc。WebDriver直接与Web浏览器进行交互,并利用其自动化的本机兼容性。
- 硒网格—Selenium Grid用于在多个平台和环境中同时分发测试执行。
3.Selenium在自动化测试世界中的优势是什么?
Selenium是一个免费的开源平台,支持广泛的用户和支持社区。它遍布系统,为Windows,Linux和Mac用户提供友好。它支持Java,Python,Perl,PHP,C#和Ruby编程语言。
由于Selenium与跨浏览器测试兼容,因此它几乎适用于包括Chrome,Firefox,Edge,Internet Explorer和Safari的几乎所有常见浏览器。另一个好处是Selenium Grid允许并行执行。
4.WebDriver是什么?
WebDriver是一种简单而简洁的编程界面。作为面向对象和轻量级API,它通过接口类型参考变量驱动浏览器。
5。什么是硒4?
Selenium 4是最新版本的Selenium WebDriver,它将完全标准化W3C.由于大多数浏览器,如Chrome、Safari、Firefox、Internet Explorer和Edge遵循W3C标准,浏览器驱动程序将在W3C标准协议中与Selenium WebDriver交互。
6.有些值得注意的Selenium 4功能?
- 硒网格-集线器和节点现在很容易设置和处理。一旦启动Selenium服务器,网格将同时作为集线器和节点。
- 现在可以在元素级别,部分级别和页面级别拍摄截图。
- 支持Microsoft Edge浏览器的铬驱动程序
- 支持相对定位器的支持
- 在一个浏览器窗口中,同时使用不同的浏览器和不同的选项卡运行
7.硒4中所有的相对定位器是什么?
我们有几种方法可以找到附近的(相对)元素。这些都是:
- oLeftOf():位于指定元素左边的元素。
- toRightOf():位于指定元素右侧的元素。
- 上面():位于上面关于指定元素的元素。
- 以下():元素位于指定元素下面。
- near():元素是距离指定元素最多50像素的范围。像素值是可调的
8.什么是不同的等待在硒WebDriver?
WebDriver中有三种类型:
- 隐式的等待:这是一个应用于WebDriver实例的等待超时。这意味着该实例的所有操作只有在等待一段时间后才会超时。
- 明确等待:这是一种排他超时方法,通过添加代码来延迟执行,直到出现特定的条件。它更具有可定制性,我们可以设置它以等待任何合适的情况。通常,我们使用一些预构建的预期条件来等待元素变成可点击、可见、不可见等。
- 流利的等待:这定义了等待特定条件的最大时间和在向“ElementNotVisibleException”抛出异常之前测试条件的频率。
9.WebDriver之间的区别是什么?findElement vs WebElement.findElement吗?
- WebDriver.findElement ():它使用给定的选择器从整个页面中找到元素。
- WebElement.findElement ():首先,这会生成WebElement。然后,基于给定选择器搜索给定元素的子元素。
10。Selenium框架中的所有设计模式是什么?
- 页面对象模型(POM)模式
- 工厂模式
- 门面模式
- 策略模式
11.页面对象模型和页面工厂的区别是什么?
- 页面对象模型(POM)Pom是硒设计模式。它被视为我们存储所有WebElements的存储库。POM很受欢迎,因为它很容易管理,提供代码可重用性,并消除重复代码。如果未来的UI更改,则可以相应地将WebEleds更新为POM或对象存储库的页面类。
- 工厂页:Selenium WebDriver的页面工厂是一个集成的概念或API。它遵循与测试类别分开的存储库对象或页面类的相同原则。在这里,我们使用@findby查找元素并使用权限进程初始化WebElements。
12.所有支持Selenium的定位器都有哪些?
名称:与ID相同,但不是唯一的
CSS.选择器:处理元素标签和属性
XPath.:在DOM中搜索元素。可靠但缓慢
类的名字:使用class name属性
TagName:使用HTML标记查找Web元素
LinkText:使用锚文本来定位Web元素
部分的链接文本:使用部分链接文本查找Web元素
13。XPath和CSS选择器之间有什么区别?
- XPath比CSS选择器慢
- XPath支持文本,而CSS选择器不支持
- XPath支持索引
- XPath可以在前向和后向方向上移动,而CSS选择器只能向前移动
14。如何使用第n个元素访问CSS选择器?
以下是使用CSS选择器访问第n个属性的语法:
前:TR:Nth-Child(2)
15。如何在Selenium WebDriver中处理警报?
WebDriver提供了一个API来处理警告对话框。警报不能检查,如果屏幕上没有警报,你会得到' NoAlertPresentException '
Alert接口包含许多api来执行不同的操作,包括:
- Alert Alert = driver.switchto().alert();
- alert.accept ();这相当于对话框中的OK按钮操作
- alert.dismiss ();这相当于单击CANCEL操作按钮
- Alert.SendKeys(“字符串”);这将允许在警报中键入某些文本
- alert.getText ();这将返回出现在对话框中的文本
16.什么是例外在硒WebDriver?
- WebDriverException
- NoSuchElementException
- nosuchframeexception.
- noalertpresentexception.
- NoSuchWindowException
- ElementNotVisibleException
- ElementNotInteractableException
- sessionnotcreatedexceptio
- TimeoutException
- InvalidSelectorException
- IllegalStateException
- StaleElementReferenceException
17.如何克服硒中的StaleElementReferenceException ?
因为对元素的引用现在已经过时,该元素将不再出现在页面的DOM中。换句话说,使用finelement方法定位的元素消失了。
要解决这个问题,请在操作中添加异常处理。如果异常过时,在500毫秒的短暂等待之后找到元素,并重复这些操作,直到操作或max迭代成功。
18.什么是框架?有哪些类型的框架可用?
框架是系统化解决问题的规则和最佳实践的宪章。
有不同种类的自动化框架:
- 数据驱动测试框架
- 关键字驱动测试框架
- 混合测试框架
- 行为驱动的框架
19.如何处理基于Windows的警报或Selenium的弹出窗口?
Selenium只支持Web应用程序,并不提供自动化基于Windows的应用程序的方法。但是,以下方法可以提供帮助。
使用基于java的Robot类实用程序来模拟键盘和鼠标动作。KeyPress和KeyRelease方法模拟用户按下并释放键盘上的某个特定键。
20.什么是经常与selenium一起使用的testng注释?
TestNG注释将测试方法的调用优先于其他方法。下面是一些硒的使用方法:
- @BeforeSuite -在所有测试之前运行
- @AfterSuite -在所有测试之后只运行一次
- @BeforeClass -在第一个测试方法之前只运行一次
- @AfterClass - 在当前类完成执行的所有测试方法之后仅运行一次
- @BeforeTest -在“test”标签内的任何测试方法之前运行
- @Aftertest - 在“测试”标记内的任何测试方法之后运行
21。什么是硒的聆听者?
侦听器是一个修改系统行为的接口,允许自定义报表和日志。
听众,webdriver侦听器和testng侦听器有两种主要类型。
22。硒的软断言和硬断言是什么?
柔软的断言:软断言在断言失败时不会抛出异常,并将继续执行下一步。
很难断言:如果断言语句失败和测试套件继续下一个@test,则立即击退断言异常。
23。什么是Java中的静态块或静态初始化器?
静态块或静态初始化器用于初始化Java中的静态字段。当我们想要在类中初始化静态字段时,我们声明静态块。加载类时,静态块一次执行一次。甚至在执行构造函数之前都执行静态块。
24。如何在Java中使用关键字This和Super ?
这:此关键字只能用于构造函数。它使用本地变量初始化构造函数中的类级别变量。我们可以使用多个这关键字。
超级:使用super关键字来调用父类构造函数。我们一次只能在构造函数内声明一个超级关键字。您应该始终在儿童类构造函数中编写super关键字
25。为什么main()方法是public, static, void在Java中?
- 上市:这是一个可以在类外部使用的访问说明符。当main方法被声明为public时,这意味着它可以在类外部使用。
- 静态:调用方法需要对象,尽管有时可能需要在没有对象帮助的情况下调用方法。然后将该方法声明为静态的。JVM调用main()方法时没有通过声明关键字static来创建对象。
- 无效:当方法不返回任何值时,使用void返回类型。main()方法不返回任何值,因此main()声明为void。
26。Java中方法重载和方法重载的区别是什么?
方法重载 | 方法重写 |
方法重载发生在同一类中 | 方法覆盖发生在超类和子类之间 |
由于它仅涉及一个类,因此不涉及继承 | 由于在超类和子类之间发生了覆盖的方法,因此涉及继承 |
在过载中,返回类型无需相同 | 在重写中,返回类型必须相同 |
参数必须对重载不同 | 重写时参数必须相同 |
静态多态性是通过方法重载实现的 | 动态多态是通过方法覆盖实现的 |
在过载中,一个方法无法隐藏另一个方法 | 在推翻时,子类方法隐藏了超类方法 |
27。什么是Java中的异常?
在Java中,异常是一个对象。当程序中提出异常情况时,会创建异常。可以由JVM或我们的应用程序代码创建异常。所有异常类都定义为java.lang。换句话说,我们可以将其视为运行时错误。
28.接口和抽象类之间有什么区别?
界面:
接口只包含抽象方法
接口中方法的访问说明符必须是公有的
3)定义的变量必须是公共的,静态,最终
4) Java中的多重继承使用接口实现
5)实现接口,使用实现关键字
摘要课程:
1)抽象类可以包含抽象方法,具体方法或两者
2)除了私有变量外,抽象类中的方法可以有任何访问说明符
4)我们无法使用抽象类实现多重继承。
5)实现我们使用实现关键字的界面
29.如何解释Java中的“try”和“catch”关键字?
在尝试块中,我们定义了导致代码的所有异常。在Java中,尝试并捕获一个单位。Catch块捕获前一试块抛出的异常。Catch Block无法通过另一个尝试块捕获异常。
如果程序中没有引起异常的代码,或者代码中没有引发异常,Java虚拟机将忽略try catch块。
语法:尝试{//代码} catch(例外e){}
30.Java中finally块的重要性是什么?
finally块用于清理诸如关闭连接和套接字等资源。如果try块没有异常执行,则在try块之后调用finally,而不执行catch块。
如果在TRY块中抛出异常,则最终阻止在CATCH块之后立即执行。如果抛出异常,即使没有Catch块处理异常,也会执行最终块。