11个基本的硒面试问题 *

最优秀的Selenium开发人员和工程师可以回答的基本问题. 在我们社区的推动下,我们鼓励专家提交问题并提供反馈.

现在就雇佣一名顶尖的Selenium开发人员
Toptal logo是顶级自由软件开发人员的专属网络吗, designers, 金融专家, 产品经理, 和世界上的项目经理. 顶级公司雇佣Toptal自由职业者来完成他们最重要的项目.

面试问题

1.

你可以使用什么函数/方法来等待页面加载, 或者页面上的某个元素出现?

View answer

要等待页面加载,可以使用显式等待. 显式等待停止,直到满足某些特定条件. Although Thread.Sleep() 是一种显式等待的形式,线程在特定的时间内停止, 等待页面加载可能不是最可靠的方式.

例如,而不是使用这样的东西:

Thread.睡眠(30000);

当线程休眠30秒(30,000毫秒)时,可以使用以下方法:

WebDriverWait = new WebDriverWait(webDriver,30);
wait.直到(ExpectedConditions.visibilityOf (h1));

其中Selenium等待,直到给定的元素在页面上可见, 或在等待30秒后抛出TimeoutException.

2.

什么是页面对象模型和页面工厂在硒?

View answer

Selenium中的页面对象模型是一种使用类来表示网页的设计模式. 类中的变量可以用来保存对网页上元素的引用, 方法可以用来实现行为. 这允许以一种优雅的方式实现既可读又易于维护和扩展的测试例程.

clickLoginButton ();
setCredentials (user_name user_password);
submitLoginForm ();

页面工厂用于初始化每个WebElement变量,并使用配置的“定位器”将其引用到实际网页上的相应元素。. Annotations, 例如@FindBy, 可以用来定义查找元素的策略吗, 连同识别他们的必要资料:

@FindBy(如何=.的名字,使用= "用户名")
私有WebElement user_name;

可以找到更多关于页面对象模型和页面工厂的信息 here.

3.

如何在页面上处理Selenium中的框架元素?

View answer

为了操作框架及其内容,您必须首先切换到它. 这类似于你必须切换到不同的页面才能与之交互:

driver.switchTo().框架(指数);

… where index 是坐标系的从零开始的索引吗. 切换帧将所有进一步的交互通过驱动程序指向选定的帧. The frame 方法也适用于名称、元素ID和对已定位元素的引用.

要切换回默认帧,请使用 defaultContent 方法可采用:

driver.switchTo().defaultContent ();

申请加入Toptal的发展网络

并享受可靠、稳定、远程 自由Selenium开发人员职位

申请成为自由职业者
4.

CSS选择器和基于XPath的定位器之间有什么区别?

View answer
  • CSS选择器通常比XPath更容易阅读. 大多数前端开发人员可能已经很熟悉CSS选择器了.

  • 对CSS选择器的支持在各种现代web浏览器中是相当一致的, 而他们的XPath引擎却不是这样.

  • CSS选择器比XPath工作得快.

出于各种原因, 比如上面列出的那些, Selenium“最佳实践”建议使用CSS选择器而不是XPath.

5.

如何编写定位符来标识div元素的直接子元素段落元素, 或者div元素的子元素?

View answer

直接子:

An immediate child in XPath is defined indicated using “/”, while on CSS, it is indicated using “>”. 例如,使用XPath:

//div/p

使用CSS:

div > p

Descendent:

查找任何div元素(i.e. 段落元素出现在以div元素为根的子树中), 我们可以在XPath中使用“//”, 只是一个空白的CSS:

//div//p
div p
6.

简单解释一下下面这段Java代码的作用:

WebElement样本= driver.findElement(通过.xpath(" / / *[包含(文本()、“数据”)]"));
View answer

它定义了一个变量 sample 类型为WebElement, 并使用XPath搜索用一个包含文本值“data”的元素的引用来初始化它。.

7.

如何将文本输入发送到焦点元素?

View answer

这可以通过在聚焦的元素上模拟按键来实现. 一种方法是在web驱动对象上执行“actions”:

新的行动(webDriver).sendKeys(“文本”).perform();

另一种方法是先切换到活动元素,然后直接向它发送密钥:

webDriver.switchTo().activeElement ().sendKeys(“文本”);
8.

为什么我们要使用无头驱动程序? 当使用无头驱动程序时,如何直观地调查测试失败?

View answer

无头驱动通常用于持续集成(CI)设置. 无头的司机, 比如PhantomJS, 提供所有标准的web浏览器功能, 但是在命令行中运行. 这些驱动程序基于命令行工具,不产生屏幕输出, 使它们成为完全自动化设置的理想选择.

能够直观地调查测试失败, 开发人员需要实现捕获屏幕截图的机制, 否则依赖于命令行输出.

9.

绝对xpath与相对xpath有什么不同? 为什么在自动化测试中相对xpath通常优于绝对xpath?

View answer

就网页而言,绝对xpath从根元素开始:

html /头/身体/表/身体/ tr / th

另一方面,相对xpath通常以" // "开头:

/ /表/身体/ tr / th 

尽管这两个xpath可能都引用某个网页上的相同元素, 前者更有可能因对页面所做的任何更改而中断. 例如, 将表移动到div元素内部将使绝对XPath无法定位该元素. 另一方面,相对XPath仍将继续工作.

10.

什么是Selenium中的混合框架?

View answer

混合框架是关键字驱动框架和数据驱动框架的组合.

11.

什么是StaleElementException ?

View answer

它是当被调用的元素由于任何原因不再附加到DOM时引发的异常.

面试不仅仅是棘手的技术问题, 所以这些只是作为一个指南. 并不是每一个值得雇佣的“A”候选人都能回答所有的问题, 回答所有问题也不能保证成为A级考生. 一天结束的时候, 招聘仍然是一门艺术,一门科学,需要大量的工作.

Why Toptal

厌倦了面试候选人? 不知道该问什么才能让你得到一份好工作?

让Toptal为你找到最合适的人.

现在就雇佣一名顶尖的Selenium开发人员

我们的专属网络硒开发人员

希望找到一份作为Selenium开发人员的工作?

让Toptal为你找到合适的工作.

作为Selenium开发人员应用

工作机会从我们的网络

提出面试问题

提交的问题和答案将被审查和编辑, 并可能会或可能不会选择张贴, 由Toptal全权决定, LLC.

*所有字段均为必填项

寻找Selenium开发人员?

Looking for 硒的开发人员? 查看Toptal的Selenium开发人员.

Papuna Gagnidze

自由Selenium开发人员

GeorgiaToptal成员 Since 2019年11月21日

Papuna是一名高技能的QA自动化和DevOps工程师,具有Linux系统管理和网络工程经验. 他拥有QA团队的领导经验和交付高质量端到端测试的技能. Papuna使用微服务和无服务器架构设计和实现了可扩展的系统.

Show More

Deniz Hamamcioglu

自由Selenium开发人员

TurkeyToptal成员 Since 2018年12月12日

Deniz在软件测试自动化方面有超过9年的经验, framework, 以及测试架构设计. 他领导和指导团队,并制定了有关测试的指导方针. Deniz是硒方面的专家, Cypress, Playwright, WebdriverIO, Protractor, 以及许多其他测试自动化技术和编程语言. 他善于沟通,对细节有敏锐的洞察力. 丹尼斯过去几年一直在远程办公, 提供跨大洲的专家指导.

Show More

Jovana苦

自由Selenium开发人员

SerbiaToptal成员 Since 2018年3月22日

在过去的七年里, Jovana是一名QA工程师,与不同的QA团队合作,在多种类型的应用程序上进行复杂的功能测试(手动和自动化). 她对寻找漏洞充满热情,是一名勤奋的团队成员,热爱学习. Jovana在压力下茁壮成长,这可以从她成功处理截止日期和产品交付的历史中看出.

Show More

Toptal连接 Top 3% 世界各地的自由职业人才.

加入Toptal社区.

Learn more