Selenium是啥?

Selenium是一个开源的和便携式的自动化软件测试工具,支持操作各种浏览器,包括 Chrome,Safari,Firefox 等主流浏览器。
官网地址:http://www.seleniumhq.org/

WebDriver又是啥?

Selenium 2.0 最主要的一个新特性就是集成了 WebDriver API。WebDriver 提供更精简的编程几口,以解决 Selenium-RC API 中的一些限制。WebDriver 为那些页面元素可以不通过页面重新加载来更新的动态网页提供了更好的支持。WebDriver 的目标是提供一套精心设计的面向对象的 API 来更好的支持现代高级 web 应用的测试工作。Selenium-WebDriver 直接通过浏览器自动化的本地接口来调用浏览器。
下是火狐和谷歌浏览器的webdriver下载地址:

安装Selenium和WebDriver

系统约定

系统环境: win10专业版
Python版本: Python 2.7.3
Selenium版本:selenium-3.4.3
火狐webdriver版本:geckodriver-v0.18.0-win64

安装Selenium

安装模块习惯采用pip安装方式,简单粗暴:
pip install selenium

安装火狐webdriver

1、 到https://github.com/mozilla/geckodriver/releases下载geckodriver-v0.18.0-win64.zip
2、 解压放置在C盘根目录(可以自行选择放置地址)
3、 把C:\geckodriver-v0.18.0-win64添加到坏境变量
4、 打开cmd命令窗口,输入geckodriver –V查看是否安装成功

Python+Selenium简单测试

  • 这里拿百度搜索为例子,其它大同小异:

首先打开https://www.baidu.com/,通过F12打开开发者工具箱查看元素可以获得以下:

1
2
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
<input id="su" value="百度一下" class="bg s_btn" type="submit">

通过以上可以获取到输入框的id为“kw”,提交按钮的id为“su”,现在可以简单编写python脚本,通过脚本打开火狐浏览器并搜索提交python字符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# coding:utf-8
import time
from selenium import webdriver
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

def test_search_in_baidu():
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("https://www.baidu.com/")
time.sleep(1) ##防止网络慢加载不完全
elem_input=driver.find_element_by_id("kw")
elem_input.send_keys(unicode( "python" , errors='ignore'))
time.sleep(1)
driver.find_element_by_id("su").click()
driver.close()

if __name__ == "__main__":
test_search_in_baidu()

具体元素获取可以通过官网的API查看: https://seleniumhq.github.io/selenium/docs/api/py/api.html

  • 如果我们在运行中出现以下错误:
    UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0xe9 in position 0: unexpected end of data
    可以采取对字符串进行unicode化,同时忽略错误,如下所示:
    1
    unicode("字符串" , errors='ignore'))

要是放在Linux系统无图形界面怎么办?

在实际中,可能有不少小伙伴可能放在linux服务器自动跑脚本,又不想安装图形界面。只是通过获取错误信息查看测试结果时候,可以使用phantomjs代替打开浏览器方式。这里只是一个抛砖引玉,具体使用可以参考官方文档,官网地址为:http://phantomjs.org/

Comments

2017-07-23