第二章 初始Selenium

web访问流程

image

  1. 测试程序调用Selenium 客户端库
  2. 客户端库会发送Selenium 命令 给浏览器的驱动程序
  3. 浏览器驱动程序接收到命令后 ,驱动浏览器去执行命令(比如点击按钮元素)
  4. 浏览器执行命令
  5. 浏览器驱动程序获取命令执行的结果,返回给我们测试程序
  6. 测试程序对返回结果进行处理

从上面可以看出,在整个访问流程中我们需要

  1. web自动化程序
  2. Selenium客户端库
  3. Webdriver
  4. 浏览器
  5. web服务器

其中:

  • selenium客户端库:支持各种主流语言 java、python、ruby、php、js、perl等。本课程使用Python
  • web自动化程序:使用Python来编写
  • 浏览器:选择有很多,比如,MS IE,firefox,sari,Chrome等,建议使用Google Chrome,我们的教程就是使用Google的Chrome浏览器来讲解
  • webdriver:取决于你使用哪一个浏览器,本教程使用Chromedriver
  • web服务器:用来提供访问服务和信息,无需我们自己搭建

Python安装

Python的安装请参考白月黑羽在线教程

客户端库的安装

不同的编程语言选择不同的Selenium客户端库。对应我们Python语言来说,Selenium客户端库的安装非常简单,用pip 命令即可。

打开 命令行程序,运行如下命令

pip installl selenium

我的Python解释器安装在C:\Python36,故执行命令后selenium会安装到如下路径 C:/Python36/Lib/site-packages/selenium

也可以通过pip命令和进入Python解释器的环境来检查

pip list

image image

浏览器驱动

不同的浏览器选择不同的浏览器驱动,以Chrome浏览器为例,可以访问下面的链接, 获取最新版本的chrome浏览器驱动

  • 地址1:https://sites.google.com/a/chromium.org/chromedriver/downloads
  • 地址2:http://chromedriver.chromium.org/downloads

点击下图箭头处,下载最新驱动

image

注意

  1. 浏览器驱动 必须要和浏览器版本匹配,如上图红圈里面的声明
  2. webdriver无需安装,解压后就可以使用

比如:当前Chrome驱动版本是2.37, 支持的Chrome浏览器版本号是 64 到 66 之间都可以。

查看浏览器版本的方法

image image

为了方便不能科学上网的朋友获取最新驱动,白月黑羽会一直为大家在这里提供Windows版本上最新的驱动下载。大家只需点击下方链接即可

下载链接:Chrome驱动2.37版,支持Chrome浏览器64-66

这是个zip包,下载下来之后里面的程序文件 chromedriver.exe 解压到某个目录下面,注意这个目录的路径最好是没有中文名和空格的。

建议大家解压到 d:/webdrivers 目录下面。

也就是保证我们的Chrome浏览器驱动路径为 d:/webdrivers/chromedriver.exe

初识Selenium

假如以用户通过百度查找白月黑羽在线教程的官方网站,通常分为以下几步:

  1. 登录:www.baidu.com
  2. 输入:白月黑羽
  3. 点击搜索
  4. 登录白月黑羽在线教程网站:www.python3.vip
  5. 退出

如果通过selenium来模拟以上步骤:

1.首先需要导入selenium库

# 导入webdriver和time模块
from selenium import  webdriver
import time

2.登录百度

# Load webdriver
driver = webdriver.Chrome(r"G:\Education\BYHY\Courseware\Improvement\Selenium\chromedriver.exe")

执行到这里的时候Selenium会去到指定的路径将chrome driver 程序运行起来,可以到进程管理器中查看 chromedriver进程,在这之后,程序就和这个进程之间进行http消息交互控制chrome driver,程序让告诉chromedriver如何操作浏览器,模拟用户的行为

该语句执行成功后,返回一个WebDriver 实例对象,通过它的方法,可以控制浏览器

# open URL
driver.get('https://www.baidu.com/')

自动化web应用的第一步就是要打开应用的网址,所以首先需要调用 get 方法 打开指定网址。该条语句执行后,web浏览器将会访问http://www.baidu.com 这个网址

3.输入“白月黑羽”

# search input box element by id and return a web element instance object
eleObj_keyword = driver.find_element_by_id('kw')

# input characters
eleObj_keyword.send_keys('白月黑羽')

通过find_element_by_id的调用,找到并选中输入框( find_element_by_id就是发出命令给浏览器驱动,要根据元素的id属性来找到元素),接着调用该对象的send_keys 方法来实现输入字符。

4.点击搜索

# find search button
eleObj_search_button = driver.find_element_by_id('su')

# click the button
eleObj_search_button.click()

同样还是先通过ID找到搜索这个按钮,然后通过click方法实现点击操作,让浏览器开始搜索。

5.登录白月黑羽在线教程网站:www.python3.vip

time.sleep(1)

为了确保网页内容显示出来,在这里等待1秒

time.sleep(1)

eleObj = driver.find_element_by_link_text('python教程 - 白月黑羽教Python').click()

大家可以试一下,第一个应该就是白月黑羽Python在线教程,不在第一个也没有关系,只要能出现在首页,我就可以通过它的link_text的字符串信息将它选中,接着进行点击操作,跳转到白月黑羽python在线教程的官方首页。

6.退出

input('Please input any key to continue......')
# Quit
driver.quit()

最后,等待用户输入,按任意键退出。

完整代码如下

#! /usr/bin/env python
# -*- coding: utf-8 -*-

from selenium import  webdriver
import time

# Load webdriver
driver = webdriver.Chrome(r"G:\Education\BYHY\Courseware\Improvement\Selenium\chromedriver.exe")

# open URL
driver.get('https://www.baidu.com/')

# search input box element by id and return a web element instance object
eleObj_keyword = driver.find_element_by_id('kw')

#input characters
eleObj_keyword.send_keys('白月黑羽')

#find search button
eleObj_search_button = driver.find_element_by_id('su')

# click the button
eleObj_search_button.click()

# ==================================================
time.sleep(1)

eleObj = driver.find_element_by_link_text('python教程 - 白月黑羽教Python').click()

# ==================================================

input('Please input any key to continue......')
# Quit
driver.quit()

从上面的例子大家可以看得出来,web自动化

1.前提

用Selenium进行自动化,操作对象是浏览器里面的web元素,web自动化就是模拟用户自动化 操作这些网页元素,所以我们必须先了解一下html和html元素的一些基本概念,大家可以参考W3school进行了解和查询

2.重点

因为web自动化是模拟用户操作,所以重点就是如何定位到我们想操作的web元素,也就是选择器。选择器通常有以下几种方式:

  • webElement方法
  • CSS选择器
  • Xpath的方法
  • 多种方式混合选择

在后面的内容中,会逐一和大家介绍

3.开发者工具栏

利用浏览器的开发者工具栏,通常按F12就可以调出如下的界面 image

在开发者工具栏还可以查看源码,测试选择器,查看网页样式等等 例如:查看百度首页搜索按钮属性就可以按照截图中的顺序,三步 image

还可以在console里面测试我们的选择器 image

  1. $()返回与指定的CSS选择器相匹配的第一个元素
  2. $$()返回与指定的CSS选择器相匹配的所有元素的数组
  3. $x()返回与指定的XPath相匹配的所有元素的数组

点击相应的元素(上图中的#3),可以跳转到web页面源码即element。其他的用法,大家可以自己参考网上的资料


本文还不错? 分享给你的朋友吧

上一页 下一页