Python自动化测试之selenium从入门到精通
1. 安装selenium
首先确保python安装成功,输入python -V
在windows下使用pip安装selenium,详情如图所示:

在ubuntu下使用pip install selenium
2. 在ubuntu下使用selenium打开firefox浏览器
from selenium import webdriver b = webdriver.Firefox()
运行提示错误:

错误原因是因为没有安装firefox的selenium驱动程序
下载geckodriver并安装即可
下载地址为https://github.com/mozilla/geckodriver/releases
下载后解压并放在/usr/local/bin/下即可
如图所示:

再次运行代码,成功启动firefox浏览器
3.ubuntu下使用selenium打开chrome浏览器
代码如下所示:
from selenium import webdriver b = webdriver.Chrome()
运行报错如下:

去 https://sites.google.com/a/chromium.org/chromedriver/home下载对应的驱动程序
4. 使用selenium定位元素
例如:
 from selenium import webdriver
 b = webdriver.Firefox()
 b.get("http://www.baidu.com")
 if "baidu" in b.current_url:
     ele = b.find_element_by_id("kw")
     ele.send_keys("selenium")
     ele.submit()
该代码完成了打开火狐浏览器,进入百度,并搜索selenium回车
注意:
查找元素可以使用更多的方法
b.find_element_by_id()
b.find_element_by_tag_name()
b.find_element_by_class_name()
b.find_element_by_name()
b.find_element_by_link_text()
b.find_element_by_partial_link_text()
b.find_element_by_css_selector()
b.find_element_by_xpath()
浏览器回退的方法:
b.back()
清空输入框的方法:
ele.clear()
5. selenium鼠标和键盘事件
例如:进入麦子学院的Python Web 开发页面
 # /usr/bin/python
 # -*- encoding:UTF-8 -*-
 from selenium import webdriver
 from selenium.webdriver.common.action_chains import ActionChains
 #打开浏览器
 b = webdriver.Firefox()
 #窗口最大化
 b.maximize_window()
 #访问麦子学院
 b.get('http://www.maiziedu.com')
 #查找元素
 ele = b.find_element_by_link_text('Python Web 开发')
 #执行动作
 ActionChains(b).move_to_element(ele).perform()
 ele.click()
注意:
常用的鼠标事件还有
ActionChains(b).hold_and_click(ele).perform() 单击事件
ActionChains(b).context_click(ele).perform() 右击事件
ActionChains(b).double_click(ele).perform() 双击事件
ActionChains(b).drag_and_drop(ele).perform() 拖动事件
ActionChains(b).move_to_element(ele).perform() 停留事件
例如:selenium的键盘事件
 # /usr/bin/python
 # -*- encoding:UTF-8 -*-
 from selenium import webdriver
 from selenium.webdriver.common.action_chains import ActionChains
 from selenium.webdriver.common.keys import Keys
 #打开firefox浏览器
 driver = webdriver.Firefox()
 #firefox浏览器窗口最大化
 driver.maximize_window()
 #打开麦子学院
 driver.get('http://www.maiziedu.com')
 #获取页面中的搜索框
 ele_search = driver.find_element_by_id('data-search')
 #执行相关动作
 ele_search.clear()
 ele_search.send_keys('python1')
 ele_search.send_keys(Keys.BACKSPACE)
 #ele_search.send_keys(Keys.CONTROL, 'a')
 #ele_search.send_keys(Keys.CONTROL, 'x')
 #ele_search.send_keys(Keys.CONTROL, 'v')
 ele_search.send_keys(Keys.ENTER)
6. 使用selenium登录无验证码网站
例如登录github,代码如下:
 # !/usr/bin/python
 # -*- coding:UTF-8 -*-
 from selenium import webdriver
 from selenium.webdriver.common.keys import Keys
 from selenium.webdriver.common.action_chains import ActionChains
 #基本变量
 url = 'http://github.com'
 username = 'liudaoqiang'
 password = '***********'
 #打开firefox浏览器
 driver = webdriver.Firefox()
 #窗口最大化
 driver.maximize_window()
 #打开网页
 driver.get(url)
 #找到对应的元素
 ele_login = driver.find_element_by_link_text('Sign in')
 #执行点击动作
 ele_login.click()
 #用户名输入框
 ele_username = driver.find_element_by_id('login_field')
 ele_username.send_keys(username)
 #密码输入框
 ele_password = driver.find_element_by_id('password')
 ele_password.send_keys(password)
 #提交按钮
 ele_submit = driver.find_element_by_name('commit')
 ele_submit.click()
7. 实现多窗口切换
例如:
 # !/usr/bin/python
 # -*- coding:UTF-8 -*-
 from selenium import webdriver
 keyword = '汉广'.decode('UTF-8')
 #打开firefox浏览器
 driver = webdriver.Firefox()
 #最大化浏览器窗口
 driver.maximize_window()
 #进入百度
 driver.get('http://www.baidu.com')
 #输入关键字
 ele_input = driver.find_element_by_id('kw')
 ele_input.send_keys(keyword)
 #确认搜索
 ele_submit = driver.find_element_by_id('su')
 ele_submit.click()
 #找到想要的网页
 ele_hangreat = driver.find_element_by_partial_link_text('中国汉广集团')
 ele_hangreat.click()
 #实现多窗口的切换
 driver.switch_to_window(driver.window_handles[0])
 #退出当前窗口
 driver.close()
 #退出firefox
 driver.quit()
常用API如下:
driver.switch_to_window(window_handle) 窗口切换
driver.window_handles 窗口句柄列表
driver.current_window_handle 当前窗口句柄
8. 等待的方法
time.sleep(minutes) 延时方式
implicitly_wait(minutes) 全局的发生异常或错误的持续检验时间
WebDriverWait(driver, minutes, func) 局部的执行一个方法的最长超时时间
例如:
 # !/usr/bin/python
 # -*- coding:UTF-8 -*-
 from selenium import webdriver
 from selenium.webdriver.support.ui import WebDriverWait
 def get_hangreat_link(driver, times):
     return WebDriverWait(driver, times).until(lambda driver: driver.find_ele
 ment_by_partial_link_text('中国汉广集团'))    
 keyword = '汉广'.decode('UTF-8')
 #打开firefox浏览器
 driver = webdriver.Firefox()
 #最大化浏览器窗口
 driver.maximize_window()
 #进入百度
 driver.get('http://www.baidu.com')
 #输入关键字
 ele_input = driver.find_element_by_id('kw')
 ele_input.send_keys(keyword)
 #确认搜索
 ele_submit = driver.find_element_by_id('su')
 ele_submit.click()
 #找到想要的网页
 #ele_hangreat = driver.find_element_by_partial_link_text('中国汉广集团')
 ele_hangreat = get_hangreat_link(driver, 10)
 ele_hangreat.click()
 #实现多窗口的切换
 driver.switch_to_window(driver.window_handles[0])
 #退出当前窗口
 #driver.close()
 #退出firefox
 #driver.quit()
9. 处理alert对话框的alter对象
alter = driver.switch_to_alert() 得到alter对象
alter.accept() 确认
alter.dismiss() 取消
alter.send_keys() 对于可输入对话框输入文字
Python自动化测试之selenium从入门到精通的更多相关文章
- 自动化测试之Selenium篇(一):环境搭建
		
当前无论找工作或者是实际项目应用,自动化测试扮演着非常重要的角色,今天我们来学习下Selenium的环境搭建 Selenium简述 Selenium是一个强大的开源Web功能测试工具系列 可进行读入测 ...
 - python自动化测试之连接几组测试包实例
		
python自动化测试之连接几组测试包实例 本文实例讲述了python自动化测试之连接几组测试包的方法,分享给大家供大家参考.具体方法如下: 具体代码如下: class RomanNumera ...
 - 玩玩自动化测试之selenium篇
		
现如今社会科技发展太快了,纯功能点点点已经落后别人好几条街了,所以为了让自己多点职业生涯年限,得挺起肩,傲起头.自动化测试,其本质是用代码程序测试程序,所以其实第一步应该学好编程语言,后再自己开发自动 ...
 - 这是2020年最强Python学习路线,从入门到精通!
		
给大家整理的这套python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.全民学Python的话题铺天盖地,中国的Py ...
 - python自动化测试之异常及日志
		
为了保持自动化测试用例的健壮性,异常的捕获及处理,日志的记录对掌握自动化测试执行情况尤为重要,这里便详细的介绍下在自动化测试中使用到的异常及日志,并介绍其详细的用法. 一.日志 打印日志是很多程序的重 ...
 - Selenium2+python自动化-查看selenium API
		
前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有. pydo ...
 - python自动化测试之appium环境安装
		
1.安装client pip install Appium-Python-Clinet 若有两个版本的python则使用(python3 -m pip install Appium-Python-C ...
 - (转)python自动化测试之异常及日志
		
为了保持自动化测试用例的健壮性,异常的捕获及处理,日志的记录对掌握自动化测试执行情况尤为重要,这里便详细的介绍下在自动化测试中使用到的异常及日志,并介绍其详细的用法. 一.日志 打印日志是很多程序的重 ...
 - python自动化测试之生成BeautifulReport可视化测试报告
		
用python写自动化测试时,unittest框架与BeautifulReport结合能够生成完美的可视化测试报告 [第一步]:准备好BeautifulReport,git地址: https://gi ...
 
随机推荐
- 【angularjs】使用angular搭建项目,滚动距离
			
常用方法 滚动到顶部:$ionicScrollDelegate.scrollTop();或者$ionicScrollDelegate.$getByHandle('视图句柄').scrollTop(); ...
 - 【angularJs】阻止默认事件
			
$scope.click = function($event){ $event.stopPropagation();//在函数体内加上这句代码就好} 作者:smile.轉角 QQ:493177502 ...
 - Spring Boot配置文件详解-ConfigurationProperties和Value优缺点-(转)好文
			
文章转自 http://www.cnblogs.com/itdragon/p/8686554.html Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件.他们 ...
 - Linux中利用grep命令如何检索文件内容详解
			
前言 Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索.下面来一起看看Linux利用grep命令检索文件内容的详细介绍. 方法 ...
 - Python脱产8期 Day10 2019/4/24
			
一 函数 1.定义:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数>>工具. 2.函数的优点:1.避免代码的冗余:2.让程序结构代码更加清晰:3.让代码更加具 ...
 - Java 数据类型总结
			
Java 中提供了八种数据类型:6个数字类型(四个整数型,两个浮点型).字符类型.布尔型. 依次分别是 : byte.int.short.long.float.double.char.boolean. ...
 - redis-trib.rb命令详解
			
redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖环境. 准备redis-tr ...
 - Docker入门 第一课 --.Net Core 使用Docker全程记录
			
微服务架构无疑是当前最火热的开发架构,而Docker作为微服务架构的首选工具,是我们必须要了解掌握的. 我通过一天的时间,网上查文档,了解基础概念,安装Docker,试验Docker命令,通过Dock ...
 - Django之连接多个数据库的相关配置
			
01-修改django默认的数据库 # settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NA ...
 - python第七章:常用模块--小白博客
			
yagmail模块 python标准库中发送电子邮件的模块比较复杂,因此,有许多开原的库提供了更加易用的接口来发送电子邮件,其中yagmail是一个使用比较广泛的开原项目,yagmail底层依然使用了 ...