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

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

程序员文章站 2022-05-12 20:04:50
...

第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()这句,效果就出来了:

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

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有个初步的轮廓上的认识即可。

相关标签: Selenium