美文网首页软件测试程序员
Selenium Web Driver自动化测试(java版)系

Selenium Web Driver自动化测试(java版)系

作者: 马可吃菠萝 | 来源:发表于2018-08-03 08:57 被阅读0次

上篇我们讨论了网页控件查找工具以及id定位器,这篇介绍name,classname和tagname,一下讲三个。这三个都有name,可以放在一起记。

第一个,name。name定位器的语法格式是

举个例子,用FirBug检查webelements.html网页的“确定”按钮,发现它有一个属性叫name:

新建一个java项目叫SeleniumName -> 包com.test -> Test.java,把该引的selenium jar包引进来,把driver设置创建好。在里面写如下代码验证“确定”按钮:

这次定位的网页控件对象是一个按钮,我给它起个名字叫confirmBtn。它有一个叫getAttribute(String property)的方法,可以接收元素的属性名称作为参数并得到属性的值。“确定”按钮有一个属性叫value,它的值就是“确定”,所以我们可以通过打印出它的属性值来判断该按钮是不是被定位了。

细心的朋友还会发现它也有id属性。我举这个例子的意思就是提醒大家一个元素可以有多个属性,可以有id,name,value,text等等。不熟悉html的朋友可以下去再温习一下。上次说了,有id的情况下最好用id,因为它在同一页面唯一标识。但我们这个例子是为了演示name,就不吹毛求疵了。你用id和name都可以找到该元素,我建议大家没事的时候可以试试,反正怎么试都不可能不成功。

和id定位器不一样,name不是同一网页唯一标识的。也就是说,同一网页上不同元素可以有相同的name属性值。这下就不得不面对这个问题了:你怎么知道用findElement取的是哪个元素的?看下面的例子,“确定”按钮不远处有个“退出”按钮,它也有name="confirm":

它俩写出来都是driver.findElement(By.name("confirm")),定位的是哪个呢?selenium规定,findElement找到的是当前页面第一个匹配的元素,谁在最前面选谁。按规矩“确定”按钮胜出。

以上就是name定位器的讲解。第二个要说的是className,它通过class属性查找网页元素。className定位器的语法格式是

注意,用id的时候取的属性名称是id,用name的时候取的属性名称是name,但是,用classname的时候取的属性名称是class,不是classname!网页元素没有classname这么一个属性,只有class。这也是html相关的知识。“确定”按钮旁边还有个按钮叫“取消”,我们用firebug查一下它:

看见那个叫class的属性了吗?值是“CANCEL”。照葫芦画瓢写classname定位“取消”按钮:

同样,classname也不是同一网页唯一标识,findElement的时候会定位第一个匹配的。所有定位器里只有id需要唯一,别的都不是,所以还是那句话,一个元素可以用多个定位器的时候选id,最简单。

最后说tagName。猜也能猜的着格式是:

都是套路。然后呢?有人说了,简单,className找class,那tagName当然就找tag啦!你去找吧,一个网页找不着找两个,两个找不着找三个,别着急,反正永远也找不着。注意,id,name和classname这些定位器们找的都是网页控件的属性,但tagName找的不是属性,而是标记的名称,比如<input>,<form>,<option>这些小东西。用FireBug查看网页上的下拉列表:

我们发现有三个<option>,findElement还是会找第一个匹配的,所以代码和结果如下:

这就是name,classname和tagName定位器的基本知识。肯定有人现在有疑问了,如果我要是就想找第二个匹配项呢?比如上边这个手机,我就想定位第三个红米怎么办呢?我就喜欢红米,看着刘诗诗吴秀波刘昊然广告上说三年销量1.1个亿我开心。强大的selenium肯定是有办法的,我们等到系统介绍元素操作时就会演示。

下次我们介绍有关链接的两个定位器– linkText和partialLinkText,本篇文章的源代码是SeleniumName

本篇知识点及注意事项:
1.用name的时候取的属性名称是name,但是,用classname的时候取的属性名称是class,不是classname。
2.tagName找的不是属性,而是标记的名称。

相关文章

网友评论

    本文标题:Selenium Web Driver自动化测试(java版)系

    本文链接:https://www.haomeiwen.com/subject/suaevftx.html