一文玩转 WebDriver API

WebDriver API 进阶使用

元素定位

从之前的讲义和学习中,我们知道,WebDriver API的调用以及自动化测试,务必从页面元素的定位开始,那么回顾之前的内容,WebDriver提供了一系列的定位符以便使用元素定位方法。常见的定位符有以下几种:

1.id

2.name

3.class name

4.tag

5.link text

6.partial link text

7.xpath

8.css selector

那么我们以下的操作将会基于上述的定位符进行定位操作。

对于元素的定位,WebDriver API可以通过定位简单的元素和一组元素来操作。在这里,我们需要告诉Selenium如何去找元素,以至于他可以充分的模拟用户行为,或者通过查看元素的属性和状态,以便我们执行一系列的检查。

在Selenium2中,WebDriver提供了多种多样的find_element_by方法在一个网页里面查找元素。这些方法通过提供过滤标准来定位元素。当然WebDriver也提供了同样多种多样的find_elements_by的方式去定位多个元素。

Selenium2提供的8个find_element_by方法去定位元素。在这里我们来具体查看每个方法的详细使用方式。下面的表格将会列出这些具体的方法:

一文玩转 WebDriver API_第1张图片
元素。

接下来的列表将会详细展示find_elements_by的方法集合。这些方法依据匹配的具体标准返回一系列的元素。依据ID查找

请查看如下HTML的代码,以便实现通过ID的属性值去定义一个查找文本框的查找:

一文玩转 WebDriver API_第2张图片
一文玩转 WebDriver API_第3张图片

依据ID查找

请查看如下HTML的代码,以便实现通过ID的属性值去定义一个查找文本框的查找:

根据上述代码,这里我们使用find_element_by_id()的方法去查找搜索框并且检查它的最大长度maxlength属性。我们通过传递ID的属性值作为参数去查找,参考如下的代码示例:

一文玩转 WebDriver API_第4张图片


如果使用find_elements_by_id()方法,将会返回所有的具有相同ID属性值的一系列元素。

依据名称name查找

这里还是根据上述ID查找的HTML代码,使用find_element_by_name的方法进行查找。参考如下的代码示例:

同样,如果使用find_elements_by_name()方法,将会返回所有的具有相同name属性值的一系列元素。

依据class name查找

除了上述的ID和name的方式查找,我们还可

请查看如下的HTML代码,通过改代码进行练习和理解以使用class name的方式进行查找和定位

事实上,通过ID,name或者类名class name查找元素是最提倡推荐的和最快的方式。当然Selenium2 WebDriver也提供了一些其他的方式,在上述三类方式条件不足,查找无效的时候,可以通过这些其他方式来查找。这些方式将会在后续的内容中讲述。

请查看如下的HTML代码,通过改代码进行练习和理解.


根据上述代码,使用find_element_by_class_name()方法去定位元素。


一文玩转 WebDriver API_第5张图片

同样的如果使用find_elements_by_class_name()方法去定位元素,将会返回所有的具有相同name属性值的一系列元素。

依据标签名tag name查找

利用标签的方法类似于利用类名等方法进行查找。我们可以轻松的查找出一系列的具有相同标签名的元素。例如我们可以通过查找表中的来获取行数。

在这里向大家推荐一个学习交流群:243771258

下面有一个HTML的示例,这里在无序列表中使用了标签。


一文玩转 WebDriver API_第6张图片

这里面我们使用find_elements_by_tag_name()的方式去获取全部的图片,在此之前,我们将会使用find_element_by_class_name()去获取到指定的

    具体代码如下:


    一文玩转 WebDriver API_第7张图片

    依据链接文字link查找

    链接文字查找通常比较简单。使用find_element_by_link_text请查看以下示例

    测试代码如下:


    一文玩转 WebDriver API_第8张图片

    依据部分链接文字partial text查找

    这里依旧使用上述的列子进行代码编写:

    一文玩转 WebDriver API_第9张图片

    依据XPath进行查找

    XPath是一种在XML文档中搜索和定位节点node的一种查询语言。所有的主流Web浏览器都支持XPath。Selenium2可以用强大的XPath在页面中查找元素。

    常用的XPath的方法有starts-with(),contains()和ends-with()等

    若想要了解更多关于XPath的内容,请查看http://www.w3schools.com/XPath/

    如下有一段HTML代码,其中里面的没有使用ID,name或者类属性,所以我们无法使用之前的方法。亚这里我们可以通过的alt属性,定位到指定的tag。


    一文玩转 WebDriver API_第10张图片

    具体代码如下:


    一文玩转 WebDriver API_第11张图片

    当然,如果使用find_elements_by_xpath()的方法,将会返回所有匹配了XPath查询的元素。

    依据CSS选择器进行查找

    CSS是一种设计师用来描绘HTML文档的视觉的层叠样式表。一般来说CSS用来定位多种多样的风格,同时可以用来是同样的标签使用同样的风格等。类似于XPath,Selenium2也可以使用CSS选择器来定位元素。

    请查看如下的HTML文档。

    一文玩转 WebDriver API_第12张图片

    我们来创建一个测试,验证这些消息是否正确。

    一文玩转 WebDriver API_第13张图片

    鼠标事件

    Web测试中,有关鼠标的操作,不只是单击,有时候还要做右击、双击、拖动等操作。这些操作包含在ActionChains类中。

    常用的鼠标方法:

    1.context_click() ##右击

    2.douch_click() ##双击

    3.drag_and_drop() ##拖拽

    4.move_to_element() ##鼠标停在一个元素上

    5.click_and_hold() # 按下鼠标左键在一个元素上

    例子:

    一文玩转 WebDriver API_第14张图片

    键盘事件键盘操作经常处理的如下:

    一文玩转 WebDriver API_第15张图片

    代码如下:


    一文玩转 WebDriver API_第16张图片


    模块化与类库

    线性测试

    至此之前,我们介绍的测试脚本,尽管使用了unittest测试框架,但是测试是按照指定的线路进行的,是线性的测试,完全遵循了脚本的执行顺序。

    测试脚本1


    一文玩转 WebDriver API_第17张图片
    如上图,其实登录的模块可以共用。


    模块化

    模块话是自动化测试的第一个延伸和基础。需要对自动化重复编写的脚本进行重构(refactor),将重复的脚本抽取出来,放到指定的代码文件中,作为共用的功能模块。

    测试脚本1:Login.py


    一文玩转 WebDriver API_第18张图片
    一文玩转 WebDriver API_第19张图片

    自动化的测试:代码如下

    一文玩转 WebDriver API_第20张图片


    参数化驱动

    数据驱动

    如果说模块化是自动化测试的第一步,那么数据驱动是自动化的第二步,从本意上来讲。数据改变更新驱动自动化的执行。从而引起测试结果的改变。其实类似于参数化。

    示例代码

    一文玩转 WebDriver API_第21张图片

    关于参数化驱动,我们可以将数据放到csv中,然后通过读取csv的数据进行自动化测试。

    关键字驱动

    这里的数据换成了特别的数据,就是关键字。

    结语:在这里跟大家推荐一个学习资料分享群:243771258,里面大牛已经为我们整理好了许多的学习资料,有自动化,接口,性能等等的学习资料别看了结束了写到这里很辛苦啦可以给我关注,点个赞哟~

你可能感兴趣的:(一文玩转 WebDriver API)