Selenium的这些自动化测试技巧你知道几个?

本文介绍了Selenium自动化测试的一些关键技巧,包括利用正确的定位器、避免依赖特定的驱动程序、实现数据驱动的测试、注意选择器顺序以及使用设计模式如PageObject。Selenium在跨浏览器测试中的应用也得到了强调,提供了在不同浏览器上自动化测试的策略。

Selenium自动化测试技巧

与以前瀑布式开发模式不同,现在软件测试人员具有使用自动化工具执行测试用例套件的优势,而以前,测试人员习惯于通过测试脚本执行来完成测试。

但自动化测试的目的不是完全摆脱手动测试,而是最大程度地减少手动运行的测试。自动化测试使您可以快速测试多语言站点,还可以提高测试执行速度。

自动化测试的过程很简单,请参考:自动化测试生命周期

Selenium自动化

由于开源工具和应用程序的成本效益,效率,可重复性,准确性和易用性,它们变得越来越重要。Selenium是开放源代码工具之一,它在应用程序测试方面提供了开放源代码工具的所有优点。

Selenium是用于测试的一套Selenium工具。它包含Selenium IDESelenium RCSelenium WebdriverSelenium Grid。它用于自动化Web交互和回归测试,并具有记录和回放功能。此外还可以将记录的脚本导出为其他语言,包括JavaC#PythonRubyJavascriptPHP

跨浏览器测试中的Selenium

顾名思义,跨浏览器测试是一种用于在不同的Web浏览器和设备上测试Web应用程序以确保其在每个设备和浏览器上都能无缝运行的方法。

Selenium帮助在Safari,Google Chrome,Mozilla Firefox和IE中自动化测试案例。Selenium也可以同时在不同浏览器上的同一台计算机上执行测试用例。它还支持多种语言和操作系统。参考文章: 如何在跨浏览器测试中提高效率

让我们看一下Selenium的最佳实践,以在自动化测试过程中充分利用。

利用正确的定位器

Selenium框架的底部是与浏览器进行交互,从而可以使用文档**对象模型(DOM)**检查,输入和浏览多个对象。这是通过一组操作发生的,并使用了多个定位器,包括CSS选择器,nameXpathID标记名链接文本classname

例如,当您不想在开发人员和测试人员不了解的情况下更改代码时,请使用ClassID定位器。另一方面,当其他团队进行测试时,可以使用链接文本来动态处理情况。最后,可以采用XPath可用于定位。

不要依赖特定的驱动程序

永远不要依赖于一种特定的驱动程序实现。了解驱动程序在不同的浏览器中不是瞬时的。也就是说,不一定会有IE驱动程序、FireFox驱动程序等。

例如,在连续Linux构建过程中执行集成测试时,将收到RemoteDriver。您可以使用LabelledParameterizedJUnit具有,@RunWith 而TestNG为 @Parameters)在Selenium中快速创建小型框架。

ScreenShotWatchManJUnit @RuleTestNG TestListenerAdapter)。换句话说,使用参数注释来处理多种浏览器类型并准备好同时执行是不错的选择。

数据驱动的测试

如果要为不同的输入使用相同的测试和相同的代码,则可以依赖Selenium。它将允许开发人员和质量检查团队进行修改,这意味着您可以将其用于系统功能测试以及浏览器兼容性测试。

Selenium还允许客户从其框架中受益。客户可以利用专有的测试加速器并启动测试自动化。这将减少自动化周期时间。有很多个函数库,可让客户端启动自动化过程。

选择器顺序

选择选择器的顺序很重要,因为选择器(例如XPathCSS)是基于位置的。与IDname链接文本相比,它们比较慢。nameID是特别直接和直接的方式选择器。CSS通常是IDName的组合。相比之下,XPath应该是最后的解决方案。

健壮的解决方案如下所示: XPath <CSS <Links Text <Name <ID。这意味着以ID开头,并使XPath为最后一个选择器。在3个没有数据的表中,XPath识别第二个表的速度最慢,并且可能不会返回正确的表。因此,最后选择了XPath,它们很脆弱。CSS始终与名称和ID结合在一起。

使用PageObjects设计模式

PageObject已作为测试自动化中的最佳设计模式而获得普及。它提升了测试的可维护维护性,还减少了代码重复量。此外,它是一个面向对象的类,它充当被测应用程序页面的接口。为简化起见,PageObject是一种面向对象的设计模式,并且将网页定义为类。页面上的不同元素将成为变量。用户交互被用具体的方法实现。

  • 网页=类别

  • 页面上的各种元素=变量

  • 用户互动=方法

  • PageObject的优点

  • 通过较小的UI调整,它有助于建立一个健壮的框架。测试代码和页面代码是分开的。

  • 它们可靠且易于维护。

  • 该脚本是可读的。该代码是可重用的。

  • 几乎完全消除重复。

提倡wait避免sleep

利用wait代替sleep。了解显式和隐式等待,还有Thread.sleep()逻辑。然后,为什么wait等待而不是sleep

  • wait

显式–等待某种情况发生,而无需继续编写代码。

隐式–指示WebDriver轮询DOM,直到完成对元素的搜索为止。默认情况下,时间设置为0。

  • sleep

Thread.sleep()无论工作页是否准备就绪,都会在括号内指定的秒数内等待。

关闭Firebug起始页

在启动firefox驱动程序时,可能已包含firebug。有时这可能导致无法工作正常。如果在启动浏览器时同时打开一个新的firebug选项卡使您感到烦恼,请按照以下提供的提示之一关闭firebug起始页。

  • showFirstRunPage标志中将False设置,如下。
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("extensions.firebug.showFirstRunPage", false);

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走: 

些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

在我的QQ技术交流群里(技术交流和资源共享,广告勿扰)

可以自助拿走,群号:563251944 群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

常用命令篇: 1. Open(url) url可以是相对的,也可以是绝对的 如绝对的url:open(http://www.taobao.com/) 相对的url:open("/search?q=’aa’"); 2. Click(locator) click可以单击一个链接,按钮或者单选框复选框等。 Click系列的有:click、clickAt、clickAndWait、clickAtAndWait clickAt(locator,coordstring): coordstring是需要单击的坐标 3. doubleClick(locator) 双击操作,用户与click一致 4. type(locator,value) 可以为指定位置输入指定值,也可以为单选框和复选框按钮赋值,value是选项的值而不是文本内容 5. typeKeys(locator,value) 模拟用户输入的行为,与type不同的是,type是强行赋值,而typeKeys是完全模拟用户操作,一个键一个键敲上去的。当输入框中原来就有值时,使用type会用新值替换旧值,而typeKeys则是在原来值上进行追加。如,原来值为aaa,现在要输入bbb,使用type则最终值为bbb,使用typeKeys则最终值为aaabbb. 6. focus(locator) 将焦点移动到指定的元素上,如果是一个可输入的元素,则将聚焦到输入框 7. select(locator,option) 选择下列框中的选项,option默认为标签label 如selenium.select (“size_select”,”label=small”),id=size_select 8. selenium.goBack()后退 9. highlight(locator)指定元素高亮 10. refresh()刷新当前页面 11. AssertText(locator,pattern) 验证某个元素的文本值是否与预期值一致,locator为元素定位,pattern为预期值 12. AssertAttribute(attributelocator,pattern) 验证某个元素的某个属性值与预期值是否一致,attributelocator为属性定位,pattern为预期值 13.assertEquals(value,selenium.getAttribute(xpath+"@value")) 验证某个元素的属性值或者是文本值是否与预期值一致 14. assertInPara(remark_para_1, getRemark(engine_type)); 一般用于验证url和remark串 15. mouseOver(locator) 将鼠标停留在某个元素上,locator为元素定位。 16. mouseDown(locator)/mouseUp(locator) 用户在某个元素上按下或者释放鼠标。Locator为元素定位 17. keyDown(locator,keysequence)/ keyUp(locator,keysequence) 用户按下或者释放某一个按钮,Locator为元素定位,keysequence为按键对应的ASCII码 18. indexOf:判断两个字符串是否存在包含关系 若x=”abcd”;y=”bc”;则有X.indexOf(y)==0 若不存在包含关系,则X.indexOf(y)==-1 19. System.out.println(value); 可以向屏幕打印出value值,这个value值可以是元素的属性值或者文本值等 20. selenium.getCookie(); 可以取到当前页面的cookie值 21. selenium.deleteCookie(name,path) 删除cookie值中的某个参数,如下: selenium.deleteCookie("_nk_","path=/, domain=.taobao.com, recurse=true"); 删除_nk_参数,path的格式必须指定上面三个字段,path=/表示当前路径,domain=.taobao.com为改cookie所属的域,recurse=true 22. assertValue(locator,pattern) 验证某个可输入元素是否被赋了某个值 23. selenium.close() 关闭浏览器。 24. contextMenu(locator)打开关联的菜单,与右键作用差不多,但是对弹出的菜单selenium没办法操作。 25. 取出value值来与某个已知值对比:assertEquals(“aa”,selenium.getAttribute(xpath+"@value"));
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值