Selenium2自动化测试实战基于Python语言》读书笔记--第2章

第2章 测试环境搭建

2.1 Windows下的环境搭建

Python 2 or Python 3?

书中是选择使用了Python 3,我个人是选择了适合当前产品的Python 2,大家各自看吧。

2.1.1 安装Python

根据操作系统选择对应版本进行安装即可,不再赘述。

2.1.2 安装setuptools与pip

setuptools是Python Enterprise Application Kit(PEAK)的一个副项目,它是Python的distutilsde工具的增强工具,可以让程序猿更方便地创建和发布Python包,特别是那些对其他包有依赖性的状况。

当需要安装第三方Python包时,经常会使用easy_install命令,其实该命令是由PEAK开发的setuptools包里带的一个简易安装命令,因此使用easy_install时实际上是在调用setuptools来完成安装模块的工作。

pip是一个安装和管理Python包的工具, 通过pip来安装Python包变得十分简单,省去了搜索-查找版本-下载-安装等繁琐的过程。pip的安装依赖于setuptools,所以在安装pip之前需要先安装setuptools。

2.1.3 安装Selenium

通过pip命令可以直接安装Selenium:pip install selenium

当只输入包名称则默认安装最新的版本,当然也可以指定版本号安装:pip install selenium==2.48.0

查看安装的包的版本信息:pip show selenium

2.1.4 安装ActivePython

ActivePython是由ActiveState公司推出的Python专用编程和调试工具。

ActivePython包含完整的Python内核,集成pip包管理工具,提供IDLE,以及WindowsAPIs服务等,总之非常完善,只是不开源,但可以免费使用。

Ps:本人使用的是Python2.7,所以下载的ActivePython也是针对此版本的。

2.2 Ubuntu下的环境搭建

Ubuntu自身对Python的依赖性较强,所以都是自带Python,同时包含2和3两个版本。

setuptools与pip已经存在于Ubuntu的软件仓库中,可以直接使用apt-get命令进行安装:

<span style="color:#000000"><code>sudo apt-get install python3-setuptools
sudo apt-get install python3-pip</code></span>
  • 1
  • 2

安装Selenium:pip install selenium

2.3 使用IDLE编写Python

IDLE(Integrated Development Environment,集成开发环境)

Alt+P:回退到上一次编辑的代码

Alt+N:前进到下一次编辑的代码

2.4 编写第一个自动化脚本

baidu.py

<span style="color:#000000"><code class="language-python"><span style="color:#880000"># -*- coding:utf-8 -*-</span>

<span style="color:#000088">from</span> selenium <span style="color:#000088">import</span> webdriver

driver = webdriver.Firefox()
driver.get(<span style="color:#009900">"https://www.baidu.com"</span>)

driver.find_element_by_id(<span style="color:#009900">"kw"</span>).send_keys(<span style="color:#009900">"Selenium2"</span>)
driver.find_element_by_id(<span style="color:#009900">"su"</span>).click()
driver.quit()</code></span>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

对上述代码进行解释:

# -*- coding:utf-8 -*- 防止乱码问题,以及方便地在程序中添加中文注释,把编码统一成UTF-8,在Python2时代,这个基本是必须的,但是到了Python3时代就不那么重要了。

from selenium import webdriver 导入WebDriver包,才能使用WebDriver API进行自动化脚本开发。

driver=webdriver.Firefox() 把webdriver的Firefox对象赋值给变量driver,只有获得了浏览器对象后,才可以启动浏览器,打开网址,操作页面元素,Firefox浏览器去掉默认已经在Selenium WebDriver包里了,可以直接调用,如果是使用IE或者Chrome浏览器则需要安装驱动才行。

driver.get("https://www.baidu.com") 获得浏览器对象后,通过get()方法,可以向浏览器发送网址URL。

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

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

driver.quit() 退出并关闭浏览器及相关的驱动程序。

这里在实际运行中遇到了一个问题,当执行该脚本时,出现了错误提示:

<span style="color:#000000"><code>selenium.common.exceptions.WebDriverException: <span style="color:#000088">Message</span>: <span style="color:#009900">'geckodriver'</span> executable needs <span style="color:#000088">to</span> be <span style="color:#000088">in</span> PATH.</code></span>
  • 1

在网上搜了一下,发现是Firefox高版本需要使用 geckodriver 来驱动,不再使用Selenium默认自带的Firefox webdriver。

需要在下面这个地址下载 geckodriver 并将其放在系统环境变量PATH目录里即可:

https://github.com/mozilla/geckodriver/releases

这里我是直接把下载到的文件放在了Python的安装目录里,再次运行脚本发现还有错误,这次错误简单了,就是无法访问网页,这个查自己的主机发现是访问百度出了点问题,修改一下DNS就解决了。

不过还有个问题: 整个过程,很快,就是打开浏览器,输入百度地址搜索关键字,然后浏览器就关闭了,根本没截到图,要想截到图,就得注释掉driver.quit()这句,效果就出来了:

这里写图片描述

2.5 安装浏览器驱动

WebDriver支持:

  • Firefox(FirefoxDriver)
  • IE(InternetExplorerDriver)
  • Opera(OperaDriver)
  • Chrome(ChromeDriver)
  • Android(AndroidDriver)
  • iPhone(IPhoneDrvier)

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

操作步骤就是下载对应驱动,将驱动文件放在Path环境变量目录下即可。

2.6 不同编程语言下使用WebDriver

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

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

  • Java中引入Selenium WebDriver实现自动化测试
<span style="color:#000000"><code class="language-java"><span style="color:#000088">package</span> com.test.<span style="color:#000088">case</span>;

<span style="color:#880000">//添加Selenium(webdiver)引用</span>
<span style="color:#000088">import</span> org.openqa.selenium.By;
<span style="color:#000088">import</span> org.openqa.selenium.WebDriver;
<span style="color:#000088">import</span> org.openqa.selenium.firefox.*;

<span style="color:#000088">public</span> <span style="color:#000088">class</span> <span style="color:#4f4f4f">BaiduTest</span> {

    <span style="color:#000088">public</span> <span style="color:#000088">static</span> <span style="color:#000088">void</span> <span style="color:#009900">main</span>(String[] args){

        WebDriver driver = <span style="color:#000088">new</span> FirefoxDriver();
        driver.get(<span style="color:#009900">"https://www.baidu.com"</span>);

        driver.findElement(By.id(<span style="color:#009900">"kw"</span>)).sendKeys(<span style="color:#009900">"selenium2"</span>);

        driver.findElement(By.id(<span style="color:#009900">"su"</span>)).click();

        driver.quit();
    }
}</code></span>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • Ruby中引入Selenium WebDriver实现自动化测试
<span style="color:#000000"><code class="language-ruby"><span style="color:#880000">#导入Selenium(webdriver)包</span>
<span style="color:#000088">require</span> <span style="color:#009900">'selenium-webdriver'</span>

driver = <span style="color:#009900">Selenium::WebDriver</span>.<span style="color:#000088">for</span> <span style="color:#006666">:firefox</span>
driver.navigate.to <span style="color:#009900">"https://www.baidu.com"</span>

driver.find_element(<span style="color:#006666">:id</span>, <span style="color:#009900">'kw'</span>).send_keys <span style="color:#009900">"selenium2"</span>
driver.find_element(<span style="color:#006666">:id</span>, <span style="color:#009900">'su'</span>).click()

driver.quit</code></span>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

虽然在不同语言中语法上有差异,不过共同点都是:

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

2.7 总结

本章主要是介绍了selenium的一些概念、安装、简单示例、浏览器驱动、不同语言的支持。

内容并不复杂,主要是实操上与书中取得一致效果,对selenium有个初步的轮廓上的认识即可。

猜你喜欢

转载自blog.csdn.net/ppw001/article/details/81408964