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从入门到精通的更多相关文章

  1. 自动化测试之Selenium篇(一):环境搭建

    当前无论找工作或者是实际项目应用,自动化测试扮演着非常重要的角色,今天我们来学习下Selenium的环境搭建 Selenium简述 Selenium是一个强大的开源Web功能测试工具系列 可进行读入测 ...

  2. python自动化测试之连接几组测试包实例

    python自动化测试之连接几组测试包实例 本文实例讲述了python自动化测试之连接几组测试包的方法,分享给大家供大家参考.具体方法如下: 具体代码如下:     class RomanNumera ...

  3. 玩玩自动化测试之selenium篇

    现如今社会科技发展太快了,纯功能点点点已经落后别人好几条街了,所以为了让自己多点职业生涯年限,得挺起肩,傲起头.自动化测试,其本质是用代码程序测试程序,所以其实第一步应该学好编程语言,后再自己开发自动 ...

  4. 这是2020年最强Python学习路线,从入门到精通!

    给大家整理的这套python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.全民学Python的话题铺天盖地,中国的Py ...

  5. python自动化测试之异常及日志

    为了保持自动化测试用例的健壮性,异常的捕获及处理,日志的记录对掌握自动化测试执行情况尤为重要,这里便详细的介绍下在自动化测试中使用到的异常及日志,并介绍其详细的用法. 一.日志 打印日志是很多程序的重 ...

  6. Selenium2+python自动化-查看selenium API

    前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有. pydo ...

  7. python自动化测试之appium环境安装

    1.安装client pip install Appium-Python-Clinet  若有两个版本的python则使用(python3 -m pip install Appium-Python-C ...

  8. (转)python自动化测试之异常及日志

    为了保持自动化测试用例的健壮性,异常的捕获及处理,日志的记录对掌握自动化测试执行情况尤为重要,这里便详细的介绍下在自动化测试中使用到的异常及日志,并介绍其详细的用法. 一.日志 打印日志是很多程序的重 ...

  9. python自动化测试之生成BeautifulReport可视化测试报告

    用python写自动化测试时,unittest框架与BeautifulReport结合能够生成完美的可视化测试报告 [第一步]:准备好BeautifulReport,git地址: https://gi ...

随机推荐

  1. 【转】Xposed出现 java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation

    Xposed出现 java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implem ...

  2. 第10章 RDB持久化

    Redis是一种内存数据库,掉电即失,为了解决这个问题Redis提供了RDB持久化功能,该功能可以把Redis中的内容以RDB文件的形式存储在硬盘上,并且每次RedisServer启动的时候都会尝试从 ...

  3. 010_动态语言与鸭子类型及python2和3的区别

    一. 动态语言中经常提到鸭子类型,所谓鸭子类型就是:如果走起路来像鸭子,叫起来也像鸭子,那么它就是鸭子(If it walks like a duck and quacks like a duck, ...

  4. Linux如何查看端口状态

    netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的 ...

  5. <网络编程>基本TCP套接字编程

    tcp提供了可靠传输,当tcp向另一端发送数据的时候,要求对端返回一个确认.如果没有接收到确认,tcp就重传数据并且等待更长时间,数次重传失败后,tcp才放弃. 建立一个tcp连接会发生如下事情: 服 ...

  6. 深入源码理解ThreadLocal和ThreadLocalMap

    一.ThreadLoacl的理解: 官方的讲: ThreadLocal是一个本地线程副本变量工具类,主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰 通俗的讲: Thre ...

  7. Eclipse 设置保存代码时自动格式化

    在码代码或者优化的时候,经常需要使用到ctrl+shift+F来格式化代码,但其实ecilpse已经自带自动格式化功能了,只是没有默认开启. 正确的打开方式:windows-->Preferen ...

  8. ODPS-Java-SDK快速入门

    一.简介 核心接口包括:AliyunAccount,MaxCompute(SDK中使用原名ODPS)等常见对象组件 更多参见文档:https://help.aliyun.com/document_de ...

  9. Ubuntu脚本修改IP信息

    #!/bin/bash cd /etc/network #清除4-9行 sed -i '4,9d' interfaces #在第3行添加网卡名称 sed -i "3a auto ${1}&q ...

  10. 朱晔的互联网架构实践心得S2E2:写业务代码最容易掉的10种坑

    我承认,本文的标题有一点标题党,特别是写业务代码,大家因为没有足够重视一些细节最容易调的坑(侧重Java,当然,本文说的这些点很多是不限制于语言的). 1.客户端的使用 我们在使用Redis.Elas ...