一、问题引入
笔者在使用robotframework工具进行web ui自动化脚本编写时,发现:对于页面某个复选框元素定位,使用select checkbox关键字+xpath定位方式进行复选框勾选操作时,报错“Checkbox with locator,'xpath=//hs-i18n[contains(.,'xx')]' not found”,即xpath定位路径的checkbox找不到。经过笔者排错和研究,得出以下结论:1、xpath定位路径正确;2、select checkbox对元素使用标签有限制,只能对input标签使用,而测试的元素使用的是div标签。
经过研究selenium2library源码发现,其提供的关键字,有不少对标签有限制。即:xx关键字,只能针对xx标签的元素使用。因此,本文着重向大家分享selenium2library具有标签限制的关键字,及其限制的标签。
二、简单了解下什么是标签
这里所说的标签,指的是html标记语言(即html标签)。它是由尖括号包围的关键词,比如 <html>;通常是成对出现的,比如 <div> 和 </div>。标签中的第一个标签,如<div>,被称为开始标签;第二个标签,如</div>被称为结束标签。
举例如下图1所示:图中的标签有<html>……</html>,<head>……</head>,<script>……</script>,<textarea>……<textarea>等等。
图1 html标签举例
三、selenium2library与元素定位相关关键字及其相应限制标签
笔者查看selenium2library源码,将涉及元素定位的关键字机器响应限制标签列表如下。
表1 selenium2library关键字及其限制标签
通过表1可以看出,selenium2library提供的涉及元素定位的关键字共95个,其中有标签限制的关键字50个,占比大于50%。由此可见,清楚关键字对标签的限制,在使用selenium2library关键字进行web ui自动化测试时具有重要的意义——避免掉坑,走弯路。
四、掉坑举例
selenium2library提供了11种定位元素方式,如:id,name,css,xpath,jquery,dom,link等等。接下来以实际栗子说明,不清楚具体标签限制情况下使用关键字造成的用例失败。
1.以本文开始引入的栗子说明。如下图2所示,如何使用selenium2library完成勾选“全选”复选框操作?
图2 举例1
答:很容易想到,selenium2library提供的勾选复选框关键字为select checkbox。使用select checkbox+xpath定位(//span[text()=’全选’])操作,结果发现,报错“Checkbox with locator 'xpath=//span[text()='全选']' not found.”如下图3所示。而失败的原因在于,如表1中所列:select checkbox关键字限制了使用的元素标签为input,而图2中的标签为span。将select checkbox关键字置换为click element即可,成功运行结果如图4所示。
图3 例1使用select checkbox失败日志图
图4 例1使用click element后成功日志图
2.再举一例。如下图4示,如何对百度logo的图标进行点击操作?
图5 举例2
答:当把logo图标当作图片使用click image操作时,错误结果如图6所示。同样如表1中所列,click image只能对标签为img的元素操作,而”相机“图标标签为span,所以失败。将click image置换为click element后,成功,结果如7所示。
图6 例2失败日志图
图7 例2成功日志图
作者:刘晓佳Rachel
来源:51Testing软件测试网原创