欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

selenium测试环境搭建和编写第一个自动化脚本

程序员文章站 2022-04-10 16:58:46
...

安装 selenium

python 中:安装 selenium 第三方模块。你可以查看已安装的模块信息:

C:\tmp>pip show selenium
Name: selenium
Version: 3.12.0
Summary: Python bindings for Selenium
Home-page: https://github.com/SeleniumHQ/selenium/
Author: UNKNOWN
Author-email: UNKNOWN
License: Apache 2.0
Location: c:\python\python36-32\lib\site-packages
Requires:
Required-by:

如果没有这些信息显示,需要使用 pip 命令安装:
打开cmd对话框输入下面的安装语句,前提是已经装了python和pip

pip install selenium

selenium测试环境搭建和编写第一个自动化脚本

编写第一个自动化脚本

安装了 selenium 之后,我们就可以开始编写自动化脚本了。使用程序员必备工具 UltraEdit,来编写你的第一个自动
化脚本。

#coding=utf-8
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("Selenium2")
driver.find_element_by_id("su").click()
sleep(10)
driver.quit()

在敲这段代码的时候,你一定充满了疑问,这段代码到底做了什么事情?下面就来逐行解释代码的含义。

**1) #coding=utf-8**

为了防止乱码问题,以及方便地在程序中添加中文注释,把编码统一成 UTF-8

i注意:等号两边不要留空格,否则将不起作用。除此之外,下面的写法也可以起到相同的作用:

**#-*- coding:utf-8 -*-**

在 Python 2 时代,一般需要在程序文件头部指定编码类型,不过到了 Python 3,编码类型的指定就显得不那么重要
了。

**2) from selenium import webdriver**

导入 Selenium 的 WebDriver 包,只有导入 WebDriver 包,才能使用 WebDriver API 进行自动化脚本开发。在
Python 下面,通过 from…import…或 import…引入模块。

**3) from time import sleep**

导入 time 模块的 sleep 包,只有导入 sleep 包,才能引用下面所需的 sleep 函数。

**4) driver = webdriver.Firefox()**

把 webdriver 的 Firefox 对象赋值给变量 driver。只有获得了浏览器对象后,才可以启动浏览器。打开网址,操作页面
元素,Firefox 浏览器驱动默认已经在 Selenium WebDriver 包里面了,所以可以直接调用。如果要使用 IE 或 Chrome 浏
览器运行 Web 自动化测试用例,则需要先安装相应的浏览器驱动才行。

**5) driver.get("http://www.baidu.com")**

获得浏览器对象后,通过 get()方法,可以向浏览器发送网址(URL)。

**6) driver.find_element_by_id("kw").send_keys("Selenium2")**

关于页面元素的定位在后面会详细介绍,这里通过 id=kw,定位到百度的输入框,并通过键盘输入方法 send_keys()
向百度输入框里输入"Selenium2"搜索关键字。

**7) driver.find_element_by_id("su").click()**

这一步通过 id=su 定位"百度一下"搜索按钮,并向搜索按钮发送单击事件 click()。

**8) sleep(10)**

百度搜索之后,先不立即关闭浏览器,停顿 10 秒,以便观察搜索结果。

**9) driver.quit()**

退出并关闭浏览器及相关的驱动程序。

保存文件为 baidu.py,在命令行运行脚本 python baidu.py,会看到脚本启动 Firefox 浏览器后进入百度主页,输入
"Sdenium2"后,单击搜索按钮,最后关闭浏览器的过程。(安装了 Firefox 浏览器),如下图所示:
selenium测试环境搭建和编写第一个自动化脚本

**

安装浏览器驱动

**
WebDriver 支持 Firefox (FirefoxDriver)、IE (IntemetExplorerDriver)、Opera (OperaDriver) 和
Chrome(ChromeDriver) 等浏览器。除此之外,它还支持 Android(AndroidDriver) 和 iPhone (lPhoneDriver) 的移动应用
测试,而且还包括一个基于 HtmlUnit 的*面实现,相关驱动为 HtmlUnitDriver。

各个浏览器驱动下载地址:http://www.seleniumhq.org/download/

安装 Chrome 浏览器驱动,下载 ChromeDriver_win32.zip(根据自己系统下载不同的版本驱动),解压得到
chromedriver.exe 文件,放到系统环境变量 Path 中的文件夹。

安装 IE 浏览器驱动,下载 IEDriverServer_Win32_x.xx.zip,解压得到 IEDriverServer.exe,放到系统环境变量 Path
中的文件夹。

在 Linux 系统下,同样需要下载系统对应的浏览器驱动,并将浏览器驱动放置到环境变量 Path 所设置的路径下。不
同的 Linux 环境变量设置也会有所区别,这里不再介绍。

安装完成后可以用 IE 和 Chrome 来替换 Firefox 运行上面的例子。

将 driver = webdriver.Firefox()
替换为:
driver = webdriver.Ie()
或
driver = webdriver.Chrome()

如果程序能调用相应的浏览器运行,则说明我们的浏览器驱动安装成功。

**

不同编程语言下使用 WebDriver

**

W3C (万维网联盟)对 WebDriver 做定义和规范:http://www.w3.org/TR/webdriver/

WebDriver 是一个远程控制界面,支持用户代理的控制权。它提供了一个独立于系统平台和编程语言的线协议(Wire
Protocol)作为一种远程进程程序指示 Web 浏览器的行为。

该 WebDriver API 通过通信协议和一组接口发现页面上 DOM 元素中定义的操作,包括控制浏览器的行为。

可以这样理解,例如,国标标准定义好插板和插头的生产标准后,所有的电器厂商生产的插头与所有插板厂商生产的
插板都按照这套标准来设计与生产,所以,我们拿到任何一个合格的插头和插板都可以匹配得上。

WebDriver 可以理解成对操作浏览器和页面元素的一套"国标",不同的编程语言都可以按照这套标准实现自己语言的
WebDriver 库。

下面展示在不同编程语言下使用 WebDriver 实现百度搜索的例子。

在 Java 中引入 Selenium WebDriver 实现自动化测试:

package com.test.case;
//添加 Selenium (webdriver)引用
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.*;
public class BaiduTest {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com/");
driver.findElement(By.id("kw")).sendKeys("selenium2");
driver.findElement(By.id(Msu")).click();
driver.quit();
}
}

在 Ruby 中引入 Selenium WebDriver 实现自动化测试:

#导入 Selenium (webdriver)包
require ‘selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.navigate.to http://www.baidu.com
driver.find_element(:id, ‘kw').send_keys "selenium2"
driver.find_element(:id, ‘su').click ()
driver.quit

在不同的编程语言中会有语法的差异,我们抛去这些差异,在不同的语言中实现百度搜索的自动化实例都完成了下面
几个操作。

(1) 首先导入 Selenium(webdriver)相关模块。
(2) 调用 Selenium 的浏览器驱动,获取浏览器句柄(driver)并启动浏览器。
(3) 通过句柄访问百度 URL。
(4) 通过句柄操作页面元素(百度输入框和按钮)。
(5) 通过句柄关闭浏览器。

所以,WebDriver 支持多种编程语言,也可以看作是多种语言都支持 WebDriver,唯一的不同在于不同语言实现的类
与方法名的命名差异性。当然,这样做的好处不言而喻:每个人都可以根据自己熟悉的语言来使用 WebDriver 编写自动化
测试脚本。