5.1 Python 基础知识 Selenium 3+Python 3 自动化测试

第 5 章 Selenium 元素定位

自 Selenium 2.0 之后,WebDriver 就出现在大众的视野中。它是一种利用浏览器原生的 API 封装了一些底层操作的功能,使得它作为一套框架更容易使用。Selenium 支持多种编程语言如 Python、Java、PHP 等。本书采用 Python 3 语言,在开始自动化测试之前有必要先了解一些 Python 基础知识,而后学习 Selenium 八大定位

5.1 Python 基础知识

Python 是跨平台、开源免费的高级编程语言之一,在自动化测试行业内使用比较广泛。它支持伪编译,可以将 Python 源程序转换为字节码来提高性能。Python 也支持将多语言程序无缝拼装(比如 Python 调用 C 程序代码,这样可以更好地发挥不同工具或语言的优势来满足不同的需求。本节将简单介绍在 Selenium 中经常用到的 Python 基础知识

Python 变量,变量不需要事先声明变量名和数据类型,可以直接赋值使用,并且适用于任意类型的对象。变量的类型也是随时变化的。如下面的例子

在定义变量名时,要注意的事项如下

· 变量名定义须以字母或下画线开头。
· 变量名中不能包含空格及标点符号(括号、引号、逗号、问号、句号等)。
· 不能使用关键字作为变量名,对于关键字可以在导入 keyword 模块后,执行「print(keyword.kwlist)」查看。
· 变量名对英文的大小写敏感。

对象模型在 Python 中是一个非常重要的概念,在 Python 中处理的一切都是对象,比如内置对象和非内置对象。内置对象可以直接调用,非内置对象需要导入相关的模块才可以使用

5.1.1 数字类型

类型名称有 int、float、complex,分别是整型、浮点型和复杂型数字的类型。Python 中的数字大小没有限制,并且支持复数及其相关计算。如整型「1234、复数型「4+5j。这里常用的整型按照进制分为二进制、八进制、十进制和十六进制

· 二进制,必须以「0b」开头,如 0b101 等。
· 八进制,必须以「0o」,如 0o23、0o12 等。
· 十进制,最常用,如 123、-5、0
· 十六进制,必须以「0x」开头,如 0x11、0xfb 等。

5.1.2 字符串类型

在 Python 中,字符串可以用双引号或单引号来指定,如「上海」或者『上海。测试代码如下

以上代码执行之后的结果如图 5.1 所示,代码的第 3 行和第 4 行是对字符串的切片操作,其作用是分别打印字符串中的第 2 个汉字和第 1 个汉字


图 5.1

在 Python 中会经常用到特殊字符,和其他开发语言一样,需要转义。Python 常用的转义表如图 5.2 所示


图 5.2

5.1.3 常用的判断与循环语句

作为一门编程语言,基本的判断与循环功能是必须的。比较常用的判断语句如「if。下面以一个简单的例子来说明 Python 中判断语句的用法,代码如下

以上代码输出结果为「数字等于 10。需要注意的有以下两点

(1)if、elif 及 else 关键字的写法

(2)每个判断语句都是以冒号「:」结尾的,注意代码中涉及的标点符号都是英文符号

以上是 if 判断语句的用法,比较容易掌握

Python 中的 for 循环运用也比较广泛。比如要处理一批 Python 对象(特别是有关联的对象)时,需要对列表、集合内的所有元素进行处理,就要运用 for 循环语句来提高代码效率。下面举例说明 for 的用法,代码如下

以上代码用两种方法实现了用 for 循环遍历列表元素,都能实现遍历元素的目的:其中第一种方法采用直接遍历元素的方式;而第二种方法采用通过列表下标的方式来获取列表元素

这里用到了 range)函数。Python 中的 range)函数功能很强大。正如官方 API 描述的那样,如果你需要在一连串的数字上进行迭代,那么内置的 range)函数是一个好的选择。在上例中「len(list1」的意思是获取列表的长度,如在上例中列表的长度为「4「range(4」表示 0、1、2、3 这 4 个数字组成的列表,但其实该函数返回的是一个可迭代对象(range 对象,而不是一个列表,这样也是为了节约内存空间。Range 函数在 Python 中运用非常广泛,语法如下

range(start,stop,step)

参数说明

start:计数是从 start 开始的,默认是从 0 开始的

stop:计数到 stop 结束,但是不包括 stop 自身

step:步长,默认为 1

range)函数的测试代码如下

以上测试代码执行的结果如图 5.3 所示,运行结果和预期一致


图 5.3

5.1.4 集合

集合的类型名称为「set」或「frozenset。所有的元素放到一对大括号中,元素之间用逗号隔开,且元素不允许重复。set 集合的元素是可变的,而 frozenset 集合的元素是不可变的

Python 中的集合一般有如下特性:
· 无序。
· 集合中的元素必须是不可变类型。

创建集合的方法可以直接赋值,也可以运用 set 方法,具体如下代码所示:

以上创建集合代码的执行结果如图 5.4 所示,从遍历集合元素的结果可以看出,集合拥有无序的特性


图 5.4

集合的相关运算包括子集、并集、交集和差集等运算

子集运算的示例代码如下,执行结果如图 5.5 所示

4

图 5.5

以下的示例代码将介绍并集、交集和差集的用法。并集是指与操作符相关的集合的所有元素的集合,去掉重复的元素。交集是指两个集合,由其中既属于 A 集合又属于 B 集合的元素组成的集合。差集(比如 A 集合与 B 集合的差集)是指由所有属于 A 集合但不属于 B 集合的元素所组成的集合

以上代码的执行结果如图 5.6 所示


图 5.6

5.1.5 列表对象

在 Python 中,列表是非常重要的概念之一。在运用 Python 进行自动化测试的过程中,列表的使用极其广泛。因此,需要重点掌握它的基本用法列表的类型名称为「list,有些类似于其他编程语言的数组。所有的元素都被一对方括号包含,元素之间使用英文逗号分隔,并且它们可以是不同的类型。Python 列表的功能和 C 语言的数值相似,但是 Python 的列表的使用更加灵活简单。在单个列表中,其列表元素可以是不同的数据类型,包括整型数字、浮点型数字、字符串,以及对象等。典型的列表写法如下

list_1 = [3,6,9,”selenium”,”8.9093”[“a”,”B”,”C”,”abc”

示例:打印出列表 list_1,代码如下

以上示例代码的执行结果如图 5.7 所示


图 5.7

Python 提供了三种方法向列表对象中添加元素

(1)append)方法:实现在列表的最后添加一个元素,并且一次只能添加一个元素。示例代码如下

以上代码的执行结果如图 5.8 所示


图 5.8

(2)extend)方法:实现一次添加多个元素功能,新添加的元素也是在列表的最后的位置。示例代码如下

以上代码的执行结果如图 5.9 所示


图 5.9

(3)insert)方法:实现在特定位置上添加元素。这里的位置是指元素所在列表中的位置索引号。注意,索引号是从 0 开始的。示例代码如下

以上代码的执行结果如图 5.10 所示,实现了在列表的第一个位置上添加元素「0


图 5.10

删除列表元素的操作在 Python Selenium 中也会经常碰到,下面介绍常用的三种方法

(1)remove)方法:删除列表中的特定元素。例如,假定在列表 list_1 中有一个元素值是「3,如果要删除它,代码可以写成「list_1.remove(3,示例代码如下

以上代码的执行结果如图 5.11 所示,成功地删除了列表元素「3


图 5.11

(2)del 方法:删除列表中指定位置的元素。例如,如果要删除列表 list_1 中位置序号为 1 的元素,代码可以写成「del list_1[1,示例代码如下

以上代码的执行结果如图 5.12 所示,成功地删除了位置序号为 1 的元素,也就是列表中的第 2 个元素


图 5.12

(3)pop)方法:将列表中的最后一个元素返回,并将其从列表中删除。示例代码如下

以上代码的执行结果如图 5.13 所示,成功地返回了列表的最后一个元素「-9」并删除


图 5.13

列表分片:是指获取列表中的部分元素作为一个新的列表元素。示例代码如下

以上代码执行成功,列表分片操作的预期结果如图 5.14 所示


图 5.14

接下来,列举三种常用的列表操作符

(1)+:作用是多个列表直接进行拼接。示例代码如下

以上代码执行结果如图 5.15 所示,拼接后的列表元素是列表 1 和列表 2 的综合


图 5.15

(2)*:作用是实现列表的成倍数的复制和添加,示例代码如下

以上代码的执行结果如图 5.16 所示,将列表 list_1 中的元素复制 3 倍后返回新列表


图 5.16

(3)> 和 <:作用是比较数据型列表的元素。示例代码如下

以上代码的执行结果如图 5.17 所示,list_1 的元素是小于 list_2 的

posted @ 2020-09-15 11:39  Marlon康  阅读(259)  评论(0编辑  收藏  举报