硒

雇佣 排名前3% of 自由硒开发者

PT视讯是顶级硒开发人员的市场, 工程师, 程序员, 程序员, 架构师, 和顾问. 顶级公司和初创企业选择PT视讯 硒自由职业者来完成关键任务的软件项目.

无风险试验,满意才付款.

客户的速度 PT视讯硒开发者4.4 / 5.0截至2021年12月4日,平均有54条评论

被领先品牌和初创公司所信赖

雇佣自由硒开发人员和工程师

克里斯蒂娜林

自由硒开发人员

加拿大PT视讯会员2016年1月19日起

Christina是一名高级QA工程师,精通测试自动化, 测试管理, 对网络和移动应用程序进行手动测试. 她在几个项目中使用硒 WebDriver从头开始创建测试自动化框架,并使用REST-assured和Postman自动化API测试. 在私营和公营部门均有工作经验, 克里斯蒂娜的工作规模很大, 中型, 小型初创公司.

显示更多

恩佐Heredia

自由硒开发人员

阿根廷2019年4月8日起成为PT视讯会员

Enzo是一名在QA/QA自动化领域拥有超过12年经验的工程师, 使用最新的技术和最高的行业质量标准自动化web ui, Rest api, 和后端服务. 他在创业公司和大公司都很在行, 或者作为第一个QA成员,或者加入各种规模的团队. 他也有定义过程的经验, 程序, 和工具才能达到最好的质量.

显示更多

Andrej Skeledzija

自由硒开发人员

克罗地亚2018年1月16日起成为PT视讯会员

Andrej是一名认证的软件测试工程师(QA),在软件测试方法方面有超过15年的经验, 测试自动化的最佳实践, 以及各种测试工具. 他通过热情、承诺和专业知识来实现项目目标. Andrej在具有多个集成点和积极截止日期的项目的复杂测试工作中有实际经验.

显示更多

莱昂纳多阿马拉尔

自由硒开发人员

巴西2016年3月1日起成为PT视讯会员

Leonardo在敏捷测试方面有超过十年的软件测试经验, 负载测试, 持续交付, 主要是测试自动化. 他能够使用各种各样的软件质量工具和环境. Leonardo拥有Tester Foundation Level和Tester Advanced Level认证,并拥有软件分析/开发的技术许可证,以及企业管理专业的研究生学习.

显示更多

Jacek》ąg

自由硒开发人员

波兰2018年9月17日起成为PT视讯会员

Jacek是一个专注和严谨(一个完美主义者)的测试人员,在后端和前端都有经验. 他主要关注Java,但他也喜欢学习和探索新技术. 知识就是力量.

显示更多

蒂亚戈Secom和i Galdino

自由硒开发人员

巴西2019年6月13日起成为PT视讯会员

Thiago是一名拥有12年以上经验的QA工程师,精通使用c# /Java和硒进行UI测试和RestSharp (c#)/RestAssured (Java)进行API测试的功能和回归测试. 他曾与几种应用程序类型打交道, 是否能够建立一个强大的背景, 与团队的业务和开发部门进行良好的沟通. 他解决问题的意志是他成功的关键之一.

显示更多

Papuna Gagnidze

自由硒开发人员

乔治亚州2018年1月5日起成为PT视讯会员

Papuna是一名QA自动化和DevOps工程师,拥有Linux系统管理和网络工程背景. 他有在代理环境中领导端到端测试的经验, 设计架构, 以及使用dockerized微服务实现高度可伸缩的系统. 帕帕纳一直在开发手机银行应用程序, 云管理平台, 导航软件, 和事件管理软件.

显示更多

Deniz Hamamcioglu

自由硒开发人员

火鸡2018年5月2日起成为PT视讯会员

Deniz在软件测试自动化方面有超过8年的经验, 框架, 测试体系结构设计. 他领导和指导团队,并就许多主题制定指导方针. Deniz是硒方面的专家, 柏树, 量角器, TestCafe, 以及许多其他测试自动化技术和编程语言. 他善于沟通,对细节有敏锐的眼光. Deniz过去几年一直在远程工作, 提供跨大洲的专家指导.

显示更多

伊戈尔·格林贝格

自由硒开发人员

加拿大2019年10月9日起

Igor是一名经验丰富的自动化架构师,具有成熟的领导能力. 热衷于通过自动化策略提高组织效率, 他有能力同时指导几个项目,并在质量和速度上保持高标准的卓越. 他的经验包括Java方面的专业知识, JavaScript, Python, 硒, Appium, 开玩笑, 茉莉花, NightwatchJS, 空手道API, 和用户界面.

显示更多

Jovana苦

自由硒开发人员

塞尔维亚2018年1月23日起成为PT视讯会员

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

显示更多

带着阿卜杜勒

自由硒开发人员

联合王国2019年9月12日起成为PT视讯会员

Fayaz是一名DevOps工程师和架构师,拥有端到端解决方案设计经验. 他拥有丰富的云计算和基础设施专业知识,并获得AWS的多项认证, Azure, 和谷歌云. 他专门研究监控工具(ELK, Zabbix, Prometheus)和Python自动化, Ansible, 起程拓殖, 和码头工人. 他实现了要构建的詹金斯 CI/CD管道, 测试, 部署包括微服务在内的大型应用程序,实现零停机. 

显示更多

现在就注册看看更多的资料.

开始招聘

招聘指南

雇佣优秀的硒开发人员指南

测试web应用程序和站点是一项艰巨的任务, 特别是如果你没有合适的工具. 硒旨在尽可能地简化这一过程, 拥有一个专业的硒自动化工程师可以极大地帮助您的项目开发.

阅读招聘指南
Trustpilot
媒体报道

... 允许公司快速组建具有特定项目所需技能的团队.

尽管对编码员的需求不断增长,PT视讯却以其几乎达到常春藤盟校(Ivy league)水平的审核而自豪.

我们的客户
创建一个跨平台应用,供全世界使用
蒂埃里Jakicevic
创建一个跨平台应用,供全世界使用
奖状

如果没有PT视讯, Tripcents就不会存在. PT视讯 Projects让我们的基金会在产品经理的帮助下快速发展, 带领开发人员, 和高级设计师. 在60多天的时间里,我们从概念到Alpha. 它的速度、知识、专业技能和灵活性是首屈一指的. PT视讯团队和其他内部团队成员一样,都是tripcents的一部分. 他们和其他人一样为开发做出了贡献并获得了所有权. 我们将继续使用PT视讯. 作为一个创业公司,它们是我们的秘密武器.

首席执行官Brantley步伐 & 联合创始人

Tripcents

我对PT视讯的经验非常满意. 和我一起工作的专业人士在几个小时内就和我通了电话. 在和他讨论了我的项目后,我知道他是我想要的候选人. 我立刻雇佣了他,他也立刻参与了我的项目, 甚至通过添加一些很棒的设计元素来增强我们的整体外观.

导演保罗•Fenley

K邓恩 & 的同事

与我搭档的开发人员都非常出色——聪明、有动力、反应灵敏. 过去很难找到高质量的工程师和顾问. 现在不是.

瑞安·洛克菲勒,首席执行官

Radeeus

PT视讯立即理解了我们的项目需要. 我们请来了一位来自阿根廷的优秀自由职业者, 从第一天起, 投身于我们的行业, 与我们的团队完美融合, 理解我们的愿景, 并产生了一流的结果. PT视讯使得与高级开发人员和程序员的联系非常容易.

Jason Kulik创始人之一

ProHatch

作为一家资源有限的小公司,我们不能犯代价高昂的错误. PT视讯为我们提供了一个经验丰富的程序员,他能够立即投入工作并开始贡献. 这是一个伟大的经历,我们会在心跳中再次重复.

斯图尔特·柏克尼校长

站点专用软件解决方案

我们通过PT视讯聘请了一位拥有丰富亚马逊网络服务经验的开发人员. 我们面试了四位候选人,其中一位非常符合我们的要求. 这一过程迅速而有效.

Abner Guzmán Rivera,首席技术官和首席科学家

照片Kharma

Sergio是一个非常棒的开发者. 一流,反应灵敏,工作效率高.

Dennis Baldwin,首席技术专家和联合创始人

PriceBlink

和Marcin一起工作是一种乐趣. 他是主管, 专业, 灵活的, 并且非常快地理解需要什么以及如何实现它.

Andre Fischer首席技术官

POSTIFY

我们需要一位专业的工程师,他能立即开始我们的项目. Simanas的工作超出了我们的预期. 不需要面试和寻找专业的开发人员是一个非常好的时间节省,并使每个人对我们选择转换平台以使用更健壮的语言感到更舒服. PT视讯让这个过程变得简单和方便. PT视讯现在是我们寻求专家水平帮助的第一个地方.

Derek Minor,网络开发高级副总裁

Networld传媒集团

PT视讯的开发人员和架构师都非常专业,也很容易共事. 他们所提供的解决方案价格合理且质量上乘,从而缩短了我们的发行时间. 再次感谢,PT视讯.

首席执行官杰里米鞋号

Kognosi

PT视讯给我们带来了很棒的体验. 他们为我们的应用程序匹配了完美的开发人员,使这个过程非常容易. 它也很容易超出最初的时间框架, 我们能够在整个项目中保持同一个承包商. 我们强烈推荐PT视讯快速无缝地寻找高质量人才.

瑞安莫首席技术官

应用商业技术有限公司

PT视讯给我留下了深刻印象. 我们的开发人员每天都和我交流,他是一个非常强大的程序员. 他是一个真正的专业人士,他的作品非常出色. PT视讯 5星.

首席执行官皮特Casoar

Ronin Play Pty Ltd

与PT视讯合作是一次很棒的经历. 使用它们之前, 我花了很长时间采访其他的自由职业者,却没有找到我需要的. 在与PT视讯接触后,他们在几天内就为我找到了一个完美的开发者. 与我一起工作的开发人员不仅交付高质量的代码, 但他也会对一些我没有想到的事情提出建议. 我很清楚阿莫里知道他在做什么. 强烈推荐!

首席执行官乔治•程

Bulavard公司.

作为一名合格的PT视讯前端开发人员,我还经营着自己的咨询业务. 当客户来找我帮忙填补他们团队中的关键角色时, PT视讯是我唯一放心推荐的地方. 托普塔尔的所有候选人都是精英中的精英. PT视讯是我在近五年的专业在线工作中发现的最物有所值的.

伊桑•布鲁克斯首席技术官

Langlotz专利 & 商标工作的公司.

在讨价还价早期, 我们需要一流的开发人员, 以可承受的利率, 及时地. PT视讯交付!

首席执行官劳拉Aldag

讨价还价

PT视讯让你非常容易找到一个候选人,并让你放心,他们有能力提供. 我肯定会向任何寻找高技能开发人员的人推荐他们的服务.

Michael Gluckman,数据经理

Mxit公司——

PT视讯能够迅速将我们的项目与最优秀的开发人员匹配起来. 开发人员已经成为我们团队的一部分, 我对他们每个人所表现出的敬业程度感到惊讶. 对于那些希望与最好的工程师远程工作的人来说,PT视讯是最好的选择.

创始人Laurent爱丽丝

Livepress

PT视讯让找到合格的工程师变得轻而易举. 我们需要一个有经验的ASP.NET MVC架构师来指导我们的初创应用程序的开发, PT视讯在不到一周的时间里就有了三个很好的候选人. 在我们做出选择后,工程师立即上线并开始工作. 这比我们自己发现和审查候选人要快得多,也容易得多.

联合创始人杰夫•凯利

协同解决方案

我们需要一些短期的Scala开发工作,PT视讯在24小时内就为我们找到了一个优秀的开发人员. 这是任何其他平台都不可能实现的.

弗兰科斯巴达,创始人之一

WhatAdsWork.com

PT视讯为快速发展和规模化的企业提供了不妥协的解决方案. 我们通过PT视讯聘请的每一位工程师都迅速融入了我们的团队,在保持卓越开发速度的同时,他们的工作达到了最高的质量标准.

联合创始人格雷格•金博

nifti.com

如何通过PT视讯招聘硒开发人员

1

与我们的行业专家之一谈谈

PT视讯的工程总监将与您一起工作,以了解您的目标, 技术需求, 和团队动力.
2

与精心挑选的人才一起工作

几天之内,我们将向您介绍适合您的项目的硒开发人员. 平均匹配时间在24小时以下.
3

合身,保证

试用您的新硒开发人员一段时间(只有满意才付薪水), 在订婚前确保他们是合适的人选.

常见问题

  • PT视讯 硒开发者有什么不同?

    在PT视讯, 我们彻底筛选我们的硒开发人员,以确保我们只为您匹配最高水平的人才. 超过100个,每年有1万多人申请加入PT视讯网络, 只有不到3%的人能成功. 你将与工程专家(而不是一般化的招聘人员或人力资源代表)一起工作来理解你的目标, 技术需求, 和团队动力. 最终的结果是:专家从我们的网络中审查人才,定制匹配,以满足您的业务需求. 现在就开始.

  • 我可以通过PT视讯在48小时内雇佣硒开发人员吗?

    这取决于可用性和进度的快慢, 您可以在注册后48小时内开始使用硒开发人员. 现在就开始.

  • PT视讯 硒开发者的无风险试用期是什么时候?

    我们确保您和您的硒开发人员之间的每次接触都是从长达两周的试用期开始的. 这意味着您有时间确认订婚是否成功. 如果你对结果完全满意的话, 我们将按时间向你收费,你们的婚约想继续多久就继续多久. 如果你不完全满意,你不会被收费. 从那里, 我们有两种选择, 或者我们可以为您提供另一位可能更适合的专家,我们将与他开始第二个, 无风险试用. 现在就开始.

分享
硒

如何聘请优秀的硒开发人员

硒项目诞生于Jason Higgins的日常工作中, Paul Gross和Jie Tina Wang在2004年为ThoughtWorks工作了一段时间. 同时向他们的同事展示硒, 保罗·汉曼特看到了巨大的潜力, 并建议开源硒,并让它在驱动模式下工作,这样其他编程语言就可以访问它. 因为它从早期开始就是开源的, 很多人都为它成为今天这样强大的web自动化工具做出了贡献.

硒 IDE在制作过程中也发挥了很大的作用 硒项目 它是如此的流行和广泛. 由Shinya Kasatani创建的Firefox插件, 这个工具允许用户记录并在浏览器中以一组硒核心命令的形式播放他们的浏览器动作. 然后,他们可以将这些操作保存到一个文件中,并在以后作为一个自包含的脚本重用它们.

硒:不仅仅是一张安全网

硒:不仅仅是一张安全网

版本1被证明是一个有趣的框架, 这让许多人对自动化测试过程大开眼界. 在此基础上构建的版本2引入了WebDriver作为接口,并且即将成为 W3C标准. 硒的WebDriver架构也被用作移动应用程序测试框架的起点,例如 Appium, Sel结束roidios司机.

硒图书馆

硒使自动化web应用程序和站点成为一个精简的过程. 它使用HTML4/HTML5/CSS标准中可用的选择器来查找网页元素. 这种方式, 使用一些聪明的脚本可以减轻手工测试web应用程序的负担. 硒 WebDriver接口使得使用任何现代浏览器和使用HTML/CSS选择器自动化网站和应用程序成为可能,这些选择器的交互方式与使用浏览器的真实用户相似——只是稍微快一点.

硒实际上由三个独立的组件组成:

  • 硒 WebDriver (硒 2)
  • 硒 IDE
  • 硒的远程控制

具备硒 WebDriver知识是必备的关键技能, 我们正在寻找使用硒驱动程序编写测试. 硒远程控制是硒服务器的一部分, 一个允许硒浏览器测试在专用服务器网格上并行运行的组件, 并且只是构建自动化系统的一个附加组件.

而硒 IDE对于新用户和快速测试硒或被测系统的实际工作方式是很好的, 它不能被认为是一种能够完全完成工作的工具, 因为对于具有大量功能的大型项目,需要以逻辑和可读的方式组织大量测试. 创建硒自动化测试, 编程技能, 建筑技能, 还需要技术知识, 与任何开发过程一样.

问题和答案

硒被设计成一个易于使用的框架, 这样技术经验不太丰富的人就可以用它来满足日常需要. 任何人都可以使用硒 IDE编写脚本,甚至不需要离开浏览器. 但实际上,能使用它的人之间不止有一条细微的界限, 找个擅长的人, 同时掌握了硒开发和测试流程. 在大多数情况下,硒开发人员需要做的不仅仅是编码和数据驱动. 在接下来的章节中,我们将看到在选择完美的候选人时,哪些技能可以被评估.

自动化还是不自动化

而关于自动化覆盖范围的争论仍在继续, 没有人能否认硒作为web自动化事实上的标准的身份,以及它对测试世界的巨大影响. 一些组织已经变得疯狂的自动化, 我们不会雇佣任何没有自动化和开发背景的人. QA开发者, 自动化测试工程师, 软件工程师在测试(SET)或其他组织调用, 将各种工具(包括硒)授权到被测系统的上下文中,现在是非常有需求的, 只要开发周期足够快,这种趋势就会持续下去, 随着网络软件变得越来越复杂.

另外还有一个问题:是否需要全职的、专门的硒开发人员? 有人可能会说,编写应用程序及其特性的开发人员也可以使用硒创建自动测试. 在很多情况下,这可能是真的.

这个问题没有直接的答案, 因为这取决于许多不同的因素,如项目规模, 解决方案的复杂性, 人力资源, 和最后期限. 如果一个web开发人员需要花费他一半的工作时间自动化和编码测试, 这并不是有效的. 有经验的专门的硒开发人员在自动化上花费的时间要少得多, 从一开始就知道如何以最好的方式组织代码, 并将创建一个质量层的测试. 他们还可以提供见解和建议,让这些功能更人性化和更高效. 在没有自动化的情况下,覆盖不容易测试的边缘情况和情况可以帮助为最终产品创建另一层安全. 这只是取决于你对产品最终质量的决心,以及从第一天起让它正常工作的决心.

问:将项目及其所有特性自动化总是合适的吗?

然而,不可否认的是,自动化在日常开发中是非常有用的, 在某些情况下,自动化是不合适的, 甚至有可能. 同时,考虑到 测试金字塔, 有太多的自动化UI测试并过分依赖它们是不明智的, 因为所有主要的应用功能都必须覆盖在超出(单元)的层次上, 服务). 因此,只有关键的应用程序特性需要使用UI覆盖率进行测试. 一些次要的应用程序功能可以在无人参与的情况下通过主要的应用程序工作流和对这些组件使用特定的单元测试进行测试.

QA、开发者或两者兼而有之?

问:作为开发者或QA,你如何看待自己的主要地位?

严格意义上来说,你所寻找的既不是QA也不是开发者. 在一个不断发展的世界里, 您正在寻找的是一个拥有适合敏捷开发哲学的广泛技能的人. 对于硒开发人员来说尤其如此, 也许比你的团队中任何其他角色都重要. 他们当然不是传统的QA, 而且大多数时候, 他们没有写出任何值得通过公司发布的代码. 他们所做的就是提供对减少测试时间和费用至关重要的支持代码, 给产品提供一个超越常规测试的支持.

尽管如此,他们还是需要具备QA技能. 创建有效且有意义的测试场景, 测试边界情况, 然后把它们编码成脚本应该是他们日常工作的一部分. 硒开发人员需要理解复杂的业务逻辑和规则, 因为这是使自动化工作真正值得的要求之一.

硒开发人员不应该害怕手工测试, 因为让我们面对现实吧, 你可以自动化很多东西, 但你不必把一切都自动化. 在自动化测试效率不高,以及人的判断比计算机提供的信息更多的情况下,手动测试仍然是有效的. 计算机善于执行,但不能做出判断. 所以利用人类最擅长的事情. 自动化从手工测试结束的地方开始. 使用硒 WebDriver进行自动化一直是手工工作的后继者, 因为它进一步验证了在手工测试应用程序时做出的良好判断.

Language-gnostic

Q:在编写硒测试时,您更喜欢使用哪种语言?

硒 WebDriver被移植到许多流行的语言, 所以如果你正在寻找一个硒专家, 你不必太担心他使用的语言. 当然,除非它对实际业务或公司政策至关重要. 驱动程序库可用于Java(原生),c#, Python, Ruby和JavaScript. 对于经验丰富的硒开发人员来说,切换到任何一种不同的语言应该是非常容易的. 驱动程序库的api几乎相同, 把重点放在语言的最佳编码实践上.

让我们来看看这些差异在实践中的表现:

Java:

导入组织.junit.AfterClass;
进口静态组织.junit.断言.*;
导入组织.junit.BeforeClass;
导入组织.junit.测试;
导入组织.openqa.硒.By;
导入组织.openqa.硒.WebDriver;
导入组织.openqa.硒.WebElement;
导入组织.openqa.硒.火狐.FirefoxDriver;

公共类TestPT视讯 {
    私有静态FirefoxDriver驱动;

    @Before
    public static void initializeDriver(){
        司机 = new FirefoxDriver();
    }

    @Test
    公共空间测试Title () {
        司机.get (" http://www.eisstocksport.net”);
        assertequal(司机.getTitle(),“雇佣最顶尖的3%的自由开发者、设计师和其他技术人才.");
    }

    @After
    public static void closeBrowser(){
        司机.辞职();
    }
}

Ruby:

需要“硒-web司机”
需要的小型试验/自动运行

class TestPT视讯 < Mini测试::Unit::TestCase
  def设置
    @司机 =硒::WebDriver.火狐:
  结束

  def 测试_title
    @司机.得到的http://www.eisstocksport.net”
    assert_equal @司机.标题“雇佣最优秀的3%的自由开发者、设计师和其他技术人才."
  结束

  def拆卸
    @司机.辞职
  结束
结束

Python:

进口unit测试
从硒导入web司机

类PT视讯Test (unit测试.TestCase):
    @classmethod
    def setUpClass (cls):
        cls.司机= web司机.Firefox ()

    def 测试_title(自我):
        自我.司机.get (" http://www.eisstocksport.net”)
        自我.assertEqual (
            自我.司机.标题,
            “雇佣最优秀的3%的自由开发者、设计师和其他技术人才.")

    @classmethod
    def tearDownClass (cls):
        cls.司机.辞职()

正如你自己看到的, 差别很小, 并期望实际需要编写的代码量.

HTML + CSS

事实上,使用硒 WebDriver可以在没有任何HTML或CSS技能的情况下自动化web页面或应用程序测试. 硒可以提供选择器和操作规范,这些可以直接使用. 但如果应聘者具备HTML和CSS的知识和理解,则会有很大的优势.

问:你如何评价你的HTML & CSS知识?

即使是中等程度的HTML和CSS知识,也可以证明对硒开发人员在处理web应用程序或测试站点时是有益的. 特别是当它是一个更重的标记或复杂.

了解这两种技术的另一个好处是,它允许硒开发人员以更直接的方式帮助前端开发人员, 或者甚至通过代码评审. 这是许多组织的经验之谈, 让项目成员参与到彼此的代码中被证明对整个开发过程是有益的.

问:什么是CSS? 如何在测试自动化环境中使用它?

CSS或级联样式表是一种向终端客户端描述HTML表示的声明性语言. 使用CSS,纯HTML页面将呈现为样式精美的文档.

然而,它们对于实际的测试自动化可能并不那么重要, 具有CSS知识的硒开发人员可以帮助他们选择更好的选择器. 如果需要,它们还可以为高级断言使用CSS属性. 它们可以帮助识别编写糟糕的CSS,以便前端开发人员修复它们.

问:简要描述HTML4页面布局.

每个网页至少包含一个头和一个包裹在HTML根元素中的body标签. 而head保存一些特定页面的元数据, 所有与实际用户界面相关的内容都在body标记中, 并对最终用户可见.

硒开发人员将在body标记中进行编程, 找出定位元素和执行各种操作和断言的最佳方法.

Q:从测试自动化的角度来看,使用HTML5的页面有什么不同吗?

No. HTML5使用一组特定的标签,以便拥有更标准化和注释良好的页面布局, 但是这对实际的测试自动化过程几乎没有影响. 虽然,这也取决于实际的web应用程序正在测试.

Q:什么是HTML DOM?

域对象模型, 或者简称为DOM, 是HTML页面的编程接口吗, 并在每次加载页面时构造. 它是一个树,将页面的元素表示为具有自己属性的对象, 用于操作的方法以及它们所响应的事件. 通过使用HTML对象模型,可以使用JavaScript操作页面及其元素.

高级网络浏览器知识

硒开发人员不仅要知道如何编写代码,这一点非常重要, 但也知道浏览器的功能. 火狐,Chrome, IE (Edge), Safari等., 它们在页面加载方面都有细微的差异, 元素渲染和处理页面的内部机制. 你必须了解他们所有的怪癖,才能使这些工具符合他们的需要. 硒开发人员不需要完全掌握开发人员的知识水平, 但是他们需要比任何普通用户更了解浏览器. 这包括使用浏览器提供的工具, 如开发人员控制台, 网络流量, 性能工具等等.

例如, Chrome有配置文件, 哪些可以为开发者带来优势, 作为在每次运行之前设置测试集的一种方式, 比如在网站上加载图片, 使用不同的下载目录, 关闭高级或标准的浏览器功能. Firefox也是一样,它的武库中也有一组类似的隐藏和非隐藏选项. 掌握这些将使开发人员作为自动化工程师的生活更容易, 对于在各种场景中测试应用程序非常重要.

今天的浏览器就像迷你操作系统(有些人甚至倾向于这样看待它们),有很多功能, 而大多数普通电脑用户都将其视为软件中最重要的一部分, 甚至不知道他们不是它的组成部分. 掌握它们,让自动化生活更快乐.

JavaScript是一个需要帮助的朋友

如果候选人了解JavaScript,这也是一个很大的优势. 在某些情况下,JavaScript可能是实现应用程序工作流部分自动化的唯一方法. 在95%的病例中,这是不需要的. 但它仍然是一个区别因素,特别是当项目使用大量JavaScript时. 因为可以在硒 WebDriver的上下文中运行或触发JavaScript, 让它成为自动化解决方案的一部分是一个简单的过程.

许多现代项目几乎都只使用JavaScript进行后端(服务器端)和前端(客户端)开发, 拥有这些知识可以使硒开发人员与其他人保持同步.

硒开发人员还可以帮助检查JavaScript代码,帮助修复bug或在bug出现之前找到它们. 这对你的团队及其成功来说是无价的.

Q:如何使用硒 Driver调用JavaScript对象或方法?

可以使用Java中的JavascriptExecutor类在驱动程序的上下文中直接调用JavaScript, 其他语言也是如此. 脚本可以同步或异步执行:

// ...
导入组织.openqa.硒.JavascriptExecutor;
导入组织.openqa.硒.火狐.FirefoxDriver;
// ...

WebDriver 司机 = new FirefoxDriver();
JavascriptExecutor js;
if(驱动程序实例){
    js = (JavascriptExecutor)驱动程序;
}
js.executeScript(“返回文档.getElementById (myid);”);
// ...

这种方式, 你可以访问整个HTML DOM,也可以调用任何脚本或对象,已经是页面的一部分.

一般的编程知识

硒 IDE使得硒对于任何想要快速深入web自动化的初学者来说非常简单. 而是为了制作高效可靠的脚本, 最好将代码组织成可重用的单元. 虽然可以使用硒 IDE来记录和回放动作, 在敏捷开发中维护代码是相当麻烦的, 很多功能都在快速频繁地改变. 所以,如果你在寻找一个专家,你要找的是一个优秀的开发人员.

问:你应该如何组织自动化代码?

如果使用Page Object模式组织硒测试代码,这也是一个很大的优势, 这将在后面几段讨论. 与支持代码解耦的测试代码可以进一步提高可维护性. 不过这里有一些指导方针:

  • 让自定义支持库远离实际的测试代码
  • 创建可以在测试之间重用的工作流助手方法
  • 使用页面对象来组织代码
  • 删除旧的不相关代码
  • 在添加新功能时,删除已经覆盖的测试

因为自动化测试的变化非常快,所以建议随着开发的进行而改变它.

用于封装测试的测试库

组织测试代码的很大一部分实际上涉及到测试单元/规范/特性库的使用,这些库将生成测试断言并检查工作流的一部分. 没有它们,也可以执行实际的测试脚本, 但它们确实提供了额外的控制水平, 特别是当项目使用CI(持续集成)服务器作为开发过程的一部分时.

问:你对测试库有什么经验?

测试库的选择将根据实际使用的编程语言而有所不同. 但是它们有一个共同的元素:断言硒执行的操作会产生预期的结果, 它是一个网页元素被显示, 正在呈现的文本或浏览器界面上可能发生的任何事情. 按语言分类,一些最流行的库是:

  • Java: jUnit和TestNG
  • Ruby: rspec,小型试验
  • Python: py.测试、unit测试鼻子

问:你有写黄瓜专栏的经验吗?

处理特性的一个有趣库是Cucumber, 测试以类似于业务规范的方式指定,即使没有技术知识的人也能阅读和理解:

场景:下载业务报表
  鉴于我是以经理的身份登记的
  当我搜索“最新报告”时
  那么报告列表应该包含“昨天的报告”

这种方式, 考试变得更加具有交际性, 而编程实现则与业务需求无关. 如果您有许多想要参与测试的涉众,那么这是一项再强调不过的技能, 他们没有实际的技术技能来自己解释代码.

页面对象模式

问:你使用过页面对象吗? 它们有什么用?

在Java 硒库版本2中引入, 页面对象模式是将代码组织成可重用类的好方法. 考虑下面自动化PT视讯站点应用程序的部分代码:

司机.findElement(通过.CssSelector(“div [data-role = ' custom_field '] ")).单击();
司机.findElement(通过.CssSelector(“div[数据值=“开发人员”]”)).单击();
司机.findElement(通过.Id (" talent_email ")).s结束Keys(“硒.dev@eisstocksport.net”);
司机.findElement(通过.Id (" talent_password ")).s结束Keys(“我的密码”);
司机.findElement(通过.Id (" talent_password_confirmation ")).s结束Keys(“我的密码”);
司机.findElement(通过.Id (" talent_full_name ")).s结束Keys(“硒Dev”);
司机.findElement(通过.Id (" talent_skype ")).s结束Keys(“硒.dev”);
司机.findElement(通过.Id (" save_new_talent ")).单击();

它起作用了, 但是,如果工作流因任何原因而改变,那么它就不太可能被重用或易于扩展. 使用页面对象模式, 这个简单的测试变成了一个高度可重用的类,可以初始化并在多个测试中使用:

包com.toptal.常见的.pageobjects;

导入组织.openqa.硒.By;
导入组织.openqa.硒.WebDriver;
导入组织.openqa.硒.WebElement;

公共类SignUpPage {
    私有最终WebDriver驱动;

    private By talentDiv = By.CssSelector(“div [data-role = ' custom_field ']”);
	private By developerDiv = By.CssSelector(“div[数据值=“开发人员”]”);
    private By 设计erDiv = By.CssSelector(“div[数据值= '设计']”);
    private通过emailField =通过.Id(“talent_email”);
    private By passwordField = By.Id(“talent_password”);
    private By passwordConfirmField = By.Id(“talent_password_confirmation”);
    private By fullNameField = By.Id(“talent_full_name”);
    private By skypeNameField = By.Id(“talent_skype”);
    private By saveTalentButton = By.Id(“save_new_talent”);

	public SignUpPage(WebDriver驱动){
		这.司机=司机;

        if (!verifyBasePageTitle) {
            抛出新的IllegalStateException(“这不是注册页面”);
        }
	}

	public String getPageTitle() {
		字符串标题=驱动程序.getTitle ();
		返回标题;
	}

	public boolean validybasepagetitle () {
		String expectedPageTitle="独家访问顶级开发者和设计师| PT视讯";
		返回getPageTitle ().包含(expectedPageTitle);
	}

    public SignUpPage selectTalent(String talent) {
        司机.findElement (talentDiv).单击();
        如果人才.equals (developerValue.文本){
            司机.findElement (developerDiv).单击();
        } else if.equals (设计erDiv.文本){
            司机.findElement (设计erDiv).单击();
        其他}{
    	     司机.findElement(通过.CssSelector(字符串.格式(" div[数据值= ' % s ']”,人才)).单击();
        }
        返回;
    }

    public signupstep2 applyAsDeveloper(String email, 字符串密码, 字符串fullName, 字符串skypeName) {
        司机.selectTalent(“开发人员”);
        司机.findElement (emailField).s结束Keys(电子邮件);
        司机.findElement (passwordField).s结束Keys(密码);
        司机.findElement (passwordConfirmField).s结束Keys(密码);
        司机.findElement (fullNameField).s结束Keys (fullName);
        司机.findElement (skypeNameField).s结束Keys (skypeName);
        司机.findElement (saveTalentButton).单击();
        返回新SignUpStepTwo(司机);
    }
}

直接想到的是,当用户使用页面对象时,页面对象作为浏览器中实际发生的事情的确切对应物是最有意义的, 就像一颗驱动书页追寻目标的心.

不同的语言有不同的页面对象库, 但它们都有一些共同之处:它们将页面上的所有元素进行逻辑布局, 同时也为访问页面上的任何功能提供了方便的方法. 它们也可以用作路由器, 页面对象创建后,web应用程序的动作和链接在一个逻辑结构,是相同的一个系统测试. 然后,您可以将它们与等待状态结合起来,以创建一个复杂的机制,该机制将驱动您的测试,并包含所有对执行重要的逻辑.

尽管现在有很多网站和web应用程序使用单页原则来呈现内容, 页面对象在大多数情况下仍然是有效的,至少让web元素以逻辑和干净的方式组织起来.

Q:页面对象应该是真实页面的精确副本吗(将所有元素作为单独的对象)?

No. 因为通常每个页面上都有很多元素, 只有那些创建工作流自动化所必需的元素才应该在页面对象中建模. 在页面上放置每个元素实际上是适得其反的,因为它会使页面对象变大, 笨手笨脚, 很难维护,而且几乎无法使用.

Q:在页面对象中直接断言是明智的吗?

应该避免. 页面对象做得最好的是通过干净的API保持和公开页面结构和页面的内部逻辑. 可以让Page Object验证元素的某些状态,但它不应该直接断言.

硒的细节

Q:哪个元素选择器被认为是最理想的?

创建测试某些功能的硒驱动程序脚本非常容易. 更容易的是使更改和支持脚本代码变得困难, 要么使用过于依赖页面结构的复杂选择器, 或者在开发测试脚本时不遵循页面对象模式. 最好的选择是那些最与众不同的, 同时, 随着应用程序的增长和布局的改变,这是最简单的方法.

例如:

司机.findElement(通过.CssSelectors(“div.一些部分div.my-section > a#some-id"))

当你可以只做简单的选择:

司机.findElement(通过.Id("一些Id "))

这也引出了另一个问题:对于页面元素的定位器来说,什么选择器实际上是最好的? 而务实的人会说,任何有效的东西都足够好, 实际上有一个最好遵循的等级制度:

id > name > class >= css_selector > tag > text > xpath

这也是有争议的, 但是总结一下背后的逻辑, id是每个页面最具特色的定位器,因此应该首先使用. 元素名称也可以非常独特. CSS类也很棒, 特别是在使用独特的CSS类构造良好的网页上.

有时,将实际的链接文本用作选择器是非常可取的, 因为当选择页面元素时,测试可以直接捕捉到界面上的任何打字错误或功能问题.

问:简要解释高级CSS选择器的用法.

当一切都失败时, 高级CSS选择器是查找页面上的元素或元素组的最佳选择. 下面是一些最常用的短语:

  • Direct child: div > a
  • 子节点或子节点:div
  • 指定id: div#myid a
  • 特定类:div.myclass一
  • 具体匹配:ul#mylist li:n -child(2)

CSS选择器也可以用于搜索页面的内容,但这是它自己的主题.

问:当有两个元素没有任何特别之处时,你应该怎么做?

有时会出现这样的情况:页面上的两个元素的HTML / CSS标签的每个部分都完全相同, 包括元素文本, 但它们确实有需要自动化的不同功能. 有多种方法可以解决这个问题:

使用findElements方法返回一个元素列表. 然后就可以通过索引访问列表中的任何元素

使用CSS / XPATH特定的匹配器和匹配元素的精确出现

Q:如果一个元素选择器对于页面上的多个元素是相同的,会发生什么?

只有第一次出现的元素才会被选中, 因为页面是从上到下阅读的, 这将是最接近文档顶部的元素.

掌握超时

问:说明显式和隐式等待的区别.

Web页面通常由许多不同的元素组成, 如链接, 段落, 按钮, 输入字段, 文本字段, 组合框和自定义对象. 而且它们中的大多数会在整个页面加载后立即加载, 而且它们在加载后几乎可以立即被访问. 但是也有异步加载元素的情况, 等待服务器响应, 或来自外部服务提供者的响应.

知道一个元素是否可以自动化的唯一方法是等待它完全加载, 硒 WebDriver提供等待. 它们可以是显性的,也可以是隐性的. 隐式等待就像在访问元素之前总是等待3秒,或者每0次轮询DOM.5秒来确定是否满足条件. 如果元素条件为真,则直接显式等待检查, 并暂停脚本执行,直到满足确切的条件, 如果在设置的持续时间后仍未满足,则抛出超时错误.

隐式:

司机.管理().超时().TimeUnit implicitlyWait (5.秒);

明确:

WebDriverWait = new WebDriverWait(司机, 5);
等待.直到(ExpectedConditions.elementToBeClickable(通过.id (" myid ")));

如你所见, 隐式等待是在驱动程序级别完成的, 因此,每当一个新页面打开, 在完成实际的元素查找之前, 司机最少等待5秒. 在现实中, 在某些情况下,你必须将两者结合使用, 尽管显式等待通常被认为是更好的做法. 在测试更可靠的情况下,隐式等待肯定更好. 使用显式等待将使测试工作得更快,这也是非常重要的. 明智地使用等待是关键. 如果应用程序使用AJAX较多, 适当的等待状态对于使自动化可靠地工作至关重要.

HTTP规则

那么,当你从一个页面导航到另一个页面时,在浏览器中会发生什么呢? web上的一切都是从向服务器发出HTTP GET请求开始,然后从服务器获得许多不同形式的响应, 是完整的网页, 图片, 保存应用程序上下文中使用的数据的声音或简单响应. 今天的互联网是多种技术的混合体, 但在其核心, 它仍然是那个从一开始就统治着互联网的老HTTP协议. 有大量来自供应商的api, 今天的应用程序之间的联系更加紧密,有时很难将一个应用程序与其他应用程序隔离开来. 最近有一种趋势是将应用程序分为两层, API层与所谓的微服务(后端)和UI层(前端)作为相互通信的独立工作单元. 有了这种分离, 硒测试实际上不仅仅是功能, 而是集成测试, 它们的价值变得更加明显.

虽然硒开发人员并不迫切需要了解大量HTTP知识, 它可以在很多方面帮助他们实现自动化, 特别是当应用程序使用大量的外部api时. 他可以记录他们的回答,然后在测试中模拟他们的速度和可靠性, 他也可以直接进行HTTP调用,因为它们是应用程序的一部分. 他甚至可以使用自己选择的工具对API应用层进行单独的测试.

问:哪些方法在浏览器中被认为是安全的?

出于安全原因,web浏览器中只允许选项、GET、HEAD、POST、PUT和DELETE. 不允许使用TRACE和CONNECT等方法. 像Internet Explorer这样的老浏览器对HTTP方法的支持甚至更加有限.

问:URL中参数的使用如何影响自动化?

很多web应用程序都在url中使用参数, 这在测试特定内容时非常有用, 而不需要经历复杂的应用程序工作流. 考虑一下这个例子:

司机.get (" http://www.eisstocksport.net/companies/apply?interested_in =开发人员”)

虽然自动化整个工作流是可取的,以达到这一点, 也可以操作请求并直接获取其他测试所需的参数:

司机.get (" http://www.eisstocksport.net/companies/apply?interested_in =设计师”)

通过这种方法, 不需要通过整个应用程序工作流,就可以参数化测试并验证条件行为.

将硒与其他工具和库结合使用

虽然你可以通过使用硒 WebDriver自动化网站和应用程序做很多事情, 将来会出现需要更多东西的情况. 例如, 您可以将硒自动化与数据库测试结合起来, 验证数据是否正确地存储在数据库中. 您甚至可以创建测试报告,记录在自动化测试中所做的一切,并将其保存为各种格式, ,以供日后参考或参考CI报告.

说的词, 对于硒开发人员来说,了解它们将是非常有益的. CI服务器用于运行各种测试, 构建应用程序并将其打包到自包含的包中. 可以使用无头驱动程序/浏览器,比如PhantomJS,在CI服务器上运行测试,或者使用 xvfb 在不运行显示服务器的情况下运行真正的浏览器. 无论你选择什么, CI对于使测试自动化成为每个团队成员都可以依赖的工具是无价的. 了解如何设置它们,并为运行硒或任何其他类型的单元或集成测试做准备,对于开发的成功至关重要.

沟通

编程的核心是通信. 不仅在人与机器之间,也在程序员之间. 使用代码与每个团队成员交流是一项很容易被忽视的技能, 因为让我们面对现实吧, 没人知道明天会发生什么:会有其他人加入这个项目, 应用程序的某些部分会丢失文档,没有人会知道它是如何编码的, 否则,您会发现每次有人试图使用代码时,您都要解释之前做过的部分代码. 无法读懂的代码可能会让您产生一种悲伤的感觉,认为您或其他人应该在一开始就做得更好. 文档固然很好,但代码本身需要尽可能清晰和交流.

对于硒开发人员, 最重要的是,他们对项目内部的一切都给出了他们的客观意见, 是代码, 设计, 特性集和实现, 并在团队的每一个成员之间进行交流. 这并不像看起来那么容易, 因为我们都是人类, 有自己的观点, 有我们自己的骄傲, 有时,这种混合会成为做出正确决策和推动项目进展的障碍. 掌握沟通不是在学校里就能学会的, 至少不是官方研究的一部分. 这是社会智力的一部分,不是每个人都有.

精通英语是在线交流的重要组成部分, 特别是在编码和从事自由职业项目时. 因此,事先评估应聘者的语言技能是很重要的.

总结

今天的Web项目如果没有某种自动化作为它们的基础部分,就不可能被看到. 使用硒支持的任何语言, 良好创建的自动化测试和测试套件可以提供一个安全网,确保任何回归在进入生产之前就被捕获, 这样的发展就会变得可靠和愉快. 硒的第三版正在制作中,它将是一个已经建立的遗产的进化. 问题不在于你是否应该拥有自动化, 问题是你的团队在自动化和质量保证方面有多专注, 以及你能在其中投入多少.

从第一天开始自动化项目绝对是一个最佳实践, 有经验丰富的硒自动化工程师和开发经验将是一个很大的优势.

如果您的项目仍然没有硒测试, 而且有自动化的需求, 不要犹豫. 现在就开始! 对于软件开发和团队士气来说,这种差异将是巨大的. 自动化并不是使所有项目问题消失的魔术棒, 但这至少会让他们更显眼.

精选的硒出版物

顶级的硒开发人员需求量很大.

开始招聘