1.安装python

打开 Python官网,找到“Download”, 在其下拉菜单中选择自己的平台(Windows/Mac),一般的Linux平台已经自带的Python,所以不需要安装,通过打开“终端” ,输入“python”命令来验证。

如果你是第一次接触Python,一定会迷惑Python为什么会提供Python2.x 和 Python3.x两个版本?那么,直接使用Python3.x的最新版本就好了。因为Python2.x预计到2020年不在维护。

如果你是Windows平台用户,会遇到一个版本为什么会提供多种个下载链接。例如:

Python 3.6.1 - 2017-03-21
Download Windows x86 web-based installer
Download Windows x86 executable installer
Download Windows x86 embeddable zip file
Download Windows x86-64 web-based installer
Download Windows x86-64 executable installer
Download Windows x86-64 embeddable zip file
Download Windows help file
x86 只支持32位的系统; x86-64 支持64位的系统。 web-based 在安装的过程中需要联网;executable 可执行文件(.exe)方式安装;embeddable zip file 嵌入式版本,可以集成到其它应用中。

注意:在安装的过程中需要勾选:“Add Python 3.x to PATH” , 如果没有勾选,需要在安装完成之后,将Python的安装目录(如:C:\Python36)添加到环境变量PATH下面。

打开Windows命令提示符(cmd)/ Linux终端输入:

C:\Users\name>python
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

安装selenium
首先,在Windows命令提示符(cmd)/ Linux终端输入:

C:\Users\name>pipUsage:pip <command> [options]Commands:install                     Install packages.download                    Download packages.uninstall                   Uninstall packages.freeze                      Output installed packages in requirements format.list                        List installed packages.show                        Show information about installed packages.check                       Verify installed packages have compatible dependencies.

……

确保pip命令可用,如果提示“pip不是内部或外部命令”,需要将将pip的安装目录(如:C:\Python36\Scripts)添加到环境变量PATH下面。

接下来通过pip命令安装Selenium:

C:\Users\name>pip install selenium
Collecting seleniumDownloading selenium-3.4.3-py2.py3-none-any.whl (931kB)26% |████████                       | 245kB 576kB/s eta 0:00:02    27% |█████████                      | 256kB 570kB/s eta 0:00:02    28% |██████████                     | 266kB 536kB/s eta 0:00:0    29% |███████████                    | 276kB 530kB/s eta 0:00:0    30% |████████████                   | 286kB 586kB/s eta 0:00:0

测试
打开一款Python编辑器,默认Python自带的IDLE也行。创建 baidu.py文件,输入以下内容:

from selenium import webdriverdriver = webdriver.Chrome()
driver.get('https://www.baidu.com')print(driver.title)driver.quit()

如果执行报错,请看下一节,Selenium浏览器驱动。

2.Selenium浏览器驱动

当selenium升级到3.0之后,对不同的浏览器驱动进行了规范。如果想使用selenium驱动不同的浏览器,必须单独下载并设置不同的浏览器驱动。

各浏览器下载地址:

Firefox浏览器驱动:geckodriver

Chrome浏览器驱动:chromedriver , taobao备用地址

IE浏览器驱动:IEDriverServer

Edge浏览器驱动:MicrosoftWebDriver

Opera浏览器驱动:operadriver

PhantomJS浏览器驱动:phantomjs

注:部分浏览器驱动地址需要科学上网。

设置浏览器驱动
设置浏览器的地址非常简单。 我们可以手动创建一个存放浏览器驱动的目录,如: C:\driver , 将下载的浏览器驱动文件(例如:chromedriver、geckodriver)丢到该目录下。

我的电脑–>属性–>系统设置–>高级–>环境变量–>系统变量–>Path,将“C:\driver”目录添加到Path的值中。

  • Path ;
  • C:\driver

设置浏览器驱动
验证不同的浏览器驱动是否正常使用。

from selenium import webdriverdriver = webdriver.Firefox()   # Firefox浏览器driver = webdriver.Chrome()    # Chrome浏览器driver = webdriver.Ie()        # Internet Explorer浏览器driver = webdriver.Edge()      # Edge浏览器driver = webdriver.Opera()     # Opera浏览器driver = webdriver.PhantomJS()   # PhantomJS

3.selenium元素定位

Selenium提供了8种定位方式。

  • id
  • name
  • class name
  • tag name
  • link text
  • partial link text
  • xpath
  • css selector

这8种定位方式在Python selenium中所对应的方法为:

find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()

假如我们有一个Web页面,通过前端工具(如,Firebug)查看到一个元素的属性是这样的。

我们的目的是要定位input标签的输入框。

  • 通过id定位:
    dr.find_element_by_id(“kw”)

  • 通过name定位:
    dr.find_element_by_name(“wd”)

  • 通过class name定位:
    dr.find_element_by_class_name(“s_ipt”)

  • 通过tag name定位:
    dr.find_element_by_tag_name(“input”)

  • 通过xpath定位,xpath定位有N种写法,这里列几个常用写法:
    dr.find_element_by_xpath("//[@id=‘kw’]")
    dr.find_element_by_xpath("//
    [@name=‘wd’]")
    dr.find_element_by_xpath("//input[@class=‘s_ipt’]")
    dr.find_element_by_xpath("/html/body/form/span/input")
    dr.find_element_by_xpath("//span[@class=‘soutu-btn’]/input")
    dr.find_element_by_xpath("//form[@id=‘form’]/span/input")
    dr.find_element_by_xpath("//input[@id=‘kw’ and @name=‘wd’]")

  • 通过css定位,css定位有N种写法,这里列几个常用写法:
    dr.find_element_by_css_selector("#kw")
    dr.find_element_by_css_selector("[name=wd]")
    dr.find_element_by_css_selector(".s_ipt")
    dr.find_element_by_css_selector(“html > body > form > span > input”)
    dr.find_element_by_css_selector(“span.soutu-btn> input#kw”)
    dr.find_element_by_css_selector(“form#form > span > input”)

接下来,我们的页面上有一组文本链接。

  • 通过link text定位:
    dr.find_element_by_link_text(“新闻”)
    dr.find_element_by_link_text(“hao123”)
  • 通过link text定位:
    dr.find_element_by_partial_link_text(“新”)
    dr.find_element_by_partial_link_text(“hao”)
    dr.find_element_by_partial_link_text(“123”)

定位一组元素
WebDriver还提供了8种用于定位一组元素的方法。

find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()

定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数。接下来通过例子演示定位一组元素的使用:

from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
sleep(1)# 定位一组元素
texts = driver.find_elements_by_xpath('//div/h3/a')#循环遍历出每一条搜索结果的标题
for t in texts:print(t.text)driver.quit()

程序运行结果:

Selenium - Web Browser Automation
官网
功能自动化测试工具——Selenium篇
selenium + python自动化测试环境搭建 - 虫师 - 博客园
selenium是什么?_百度知道
怎样开始用selenium进行自动化测试(个人总结)_百度经验
Selenium_百度百科
selenium_百度翻译
Selenium官网教程_selenium自动化测试实践_Selenium_领测软件测试网
Selenium(浏览器自动化测试框架)_百度百科
自动化基础普及之selenium是啥? - 虫师 - 博客园
python十大主流开源框架 「菜鸟必看」

4.WebDriver常用方法

4.1 点击和输入
前面我们已经学习了定位元素, 定位只是第一步, 定位之后需要对这个元素进行操作, 或单击(按钮) 或输入(输入框) , 下面就来认识 WebDriver 中最常用的几个方法:

clear(): 清除文本。

send_keys (value): 模拟按键输入。

click(): 单击元素。

from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()driver.quit()

4.2 提交submit()
submit()方法用于提交表单。 例如, 在搜索框输入关键字之后的“回车” 操作, 就可以通过该方法模拟。

from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")search_text = driver.find_element_by_id('kw')
search_text.send_keys('selenium')
search_text.submit()driver.quit()

有时候 submit()可以与 click()方法互换来使用, submit()同样可以提交一个按钮, 但 submit()的应用范围远不及 click()广泛。

4.3 其他常用方法

size: 返回元素的尺寸。

text: 获取元素的文本。

get_attribute(name): 获得属性值。

is_displayed(): 设置该元素是否用户可见。

from selenium import webdriverdriver = webdriver.Chrome()
driver.get("http://www.baidu.com")#获得输入框的尺寸
size = driver.find_element_by_id('kw').size
print(size)#返回百度页面底部备案信息
text = driver.find_element_by_id("cp").text
print(text)#返回元素的属性值, 可以是 id、 name、 type 或其他任意属性
attribute = driver.find_element_by_id("kw").get_attribute('type')
print(attribute)#返回元素的结果是否可见, 返回结果为 True 或 False
result = driver.find_element_by_id("kw").is_displayed()
print(result)driver.quit()

输出结果:

{‘width’: 500, ‘height’: 22}
©2015 Baidu 使用百度前必读 意见反馈 京 ICP 证 030173 号
text
True

执行上面的程序并查看结果: size 方法用于获取百度输入框的宽、 高, text 方法用于获得百度底部的备案信息, get_attribute()用于获得百度输入的 type 属性的值, is_displayed()用于返回一个元素是否可见, 如果可见则返回 True, 否则返回 False。

5. 获取断言信息

不管是在做功能测试还是自动化测试,最后一步需要拿实际结果与预期进行比较。这个比较的称之为断言。我们通常可以通过获取title 、URL和text等信息进行断言。text方法在前面已经讲过,它用于获取标签对之间的文本信息。 下面同样以百度为例,介绍如何获取这些信息。

from selenium import webdriver
from time import sleepdriver = webdriver.Firefox()
driver.get("https://www.baidu.com")print('Before search================')# 打印当前页面title
title = driver.title
print(title)# 打印当前页面URL
now_url = driver.current_url
print(now_url)driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
sleep(1)print('After search================')# 再次打印当前页面title
title = driver.title
print(title)# 打印当前页面URL
now_url = driver.current_url
print(now_url)# 获取结果数目
user = driver.find_element_by_class_name('nums').text
print(user)driver.quit()

脚本运行结果如下:

Before search================
百度一下,你就知道
https://www.baidu.com/
After search================
selenium_百度搜索
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx...
搜索工具
百度为您找到相关结果约5,380,000个
  • title:用于获得当前页面的标题。
  • current_url:用户获得当前页面的URL。
  • text:获取搜索条目的文本信息。

6.控制浏览器操作

6.1 控制浏览器窗口大小
有时候我们希望能以某种浏览器尺寸打开,让访问的页面在这种尺寸下运行。例如可以将浏览器设置成移动端大小(480* 800),然后访问移动站点,对其样式进行评估;WebDriver提供了set_window_size()方法来设置浏览器的大小。

from selenium import webdriverdriver = webdriver.Chrome()
driver.get("http://m.baidu.com")#参数数字为像素点
print("设置浏览器宽480、高800显示")
driver.set_window_size(480, 800)
driver.quit()

在PC端执行自动化测试脚本大多的情况下是希望浏览器在全屏幕模式下执行,那么可以使用maximize_window()方法使打开的浏览器全屏显示,其用法与set_window_size() 相同,但它不需要参数。

6.2 控制浏览器后退、前进

在使用浏览器浏览网页时,浏览器提供了后退和前进按钮,可以方便地在浏览过的网页之间切换,WebDriver也提供了对应的back()和forward()方法来模拟后退和前进按钮。下面通过例子来演示这两个方法的使用。

from selenium import webdriver
driver = webdriver.Chrome()#访问百度首页
first_url= 'http://www.baidu.com'
print("now access %s" %(first_url))
driver.get(first_url)#访问新闻页面
second_url='http://news.baidu.com'
print("now access %s" %(second_url))
driver.get(second_url)#返回(后退)到百度首页
print("back to  %s "%(first_url))
driver.back()#前进到新闻页
print("forward to  %s"%(second_url))
driver.forward()driver.quit()

为了看清脚本的执行过程,每操作一步都通过print()来打印当前的URL地址。

6.3 刷新页面
有时候需要手动刷新(F5) 页面。

driver.refresh() #刷新当前页面

更多教程:
http://www.testclass.net/selenium_python

python使用selenium入门相关推荐

  1. python之selenium入门教程

    selenium,一个第三方库,可以通过给driver发送命令来操作浏览器,以达到模拟人操作浏览器,实现网页自动化.测试等,减少了重复性工作. selenium的工作的基本架构如下: 安装 本文是在p ...

  2. python学成需要多久-小白学python怎么快速入门?多久能完成一个项目?

    首先我们可以来看一下学完Python可以做什么? 1.网站后端程序员:使用它搭建网站,后台服务比较容易维护; 2.自动化运维:自动化处理大量的运维任务; 3.数据分析师:快速开发快速验证,分析数据得到 ...

  3. python爬虫挖掘平台搭建_一篇非常棒的安装Python及爬虫入门博文!

    原标题:一篇非常棒的安装Python及爬虫入门博文! 一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) 第一部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据 ...

  4. [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论

    前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...

  5. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  6. python交互式编程在哪里_终于明了python交互式编程入门

    Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python交互式编程入门 环境配置:下载Python并 ...

  7. Python爬虫 Selenium实现自动登录163邮箱和Locating Elements介绍

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  8. python web py入门-1-web.py简介和安装

    背景 记录python web.py开发入门学习的过程,主要想通过这个入门,然后继续去学习python Django框架开发课程.目前我的个人技能状态是,稍微懂点selenium webUI自动化测试 ...

  9. python爬虫token_Python入门:模拟登录(二)或注册之requests处理带token请求

    转自http://blog.csdn.net/foryouslgme/article/details/51822209 首先说一下使用Python模拟登录或注册时,对于带token的页面怎么登录注册模 ...

最新文章

  1. utf8 连接 mysql_mysql配置为支持utf8的连接方式只要改client就可以了吗
  2. window使用笔记
  3. NDK 交叉编译常用变量
  4. zk的数据目录:`version-2`
  5. Bash Shell学习笔记一
  6. python 生成html文件浏览器_Handout库:能将python脚本转化为html展示文件
  7. ABP理论学习之日志记录
  8. Mac os装软件时提示显示需要安装旧Java SE 6运行环境解决办法
  9. Hadoop1.x中HDFS工作原理
  10. bzoj 4260 REBXOR —— Trie树
  11. 这样的快速分时界面怎么样?
  12. 西门子1200fb284
  13. 14-模板方法模式Quarkus实现
  14. MPQ4420HGJ DCDC电源设计+SIMetrix+Spice仿真模型
  15. 西门子、安川、三菱伺服技术完全精通系列丛书!
  16. html如何设置提示收到消息,从零开始实现一个消息提示框
  17. mysql查看数据库
  18. 工程师文化:BAT为什么不喊老板?
  19. Java泛型方法返回值前面为什么要加上T
  20. PyCharm:安装/搭建/配置/插件

热门文章

  1. 辅助修改Blog模板的资料和工具
  2. 简单unity协程优化方案
  3. 百度离线地图JSAPIV3.0
  4. 资源网站大集合(巨强)
  5. HTML滚动条样式代码及使用技巧
  6. 思维导图从入门到大神
  7. Ralink无线驱动 有SoftAP_Mode ,STA_Mode
  8. mybatis学习笔记——mybatis-plus快速入门
  9. C++的LoadLibrary动态加载dll
  10. 【科普】测绘行业比较厉害的轻量级无人机机载激光雷达