一、安装

pip install Selenium

二、初始化浏览器

  • Chrome 是初始化谷歌浏览器

  • Firefox 是初始化火狐浏览器

  • Edge 是初始化IE浏览器

  • PhantomJS 是一个无界面浏览器。

from selenium import webdriver

driver = webdriver.Chrome()

三、设置浏览器大小

  • maximize_window 最大化窗口

  • set_window_size 自定义窗口大小

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()

四、访问页面

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')

五、定位元素

  1. 通过元素id定位

  • 定位一个元素:find_element_by_id

  • 定位多个元素:find_elements_by_id

  1. 通过元素name定位

  • 定位一个元素:find_element_by_id

  • 定位多个元素:find_elements_by_id

  1. 通过xpath表达式定位

  • 定位一个元素:find_element_by_id

  • 定位多个元素:find_elements_by_id

  1. 通过完整超链接定位

  • 定位一个元素:find_element_by_id

  • 定位多个元素:find_elements_by_id

  1. 通过部分链接定位

  • 定位一个元素:find_element_by_id

  • 定位多个元素:find_elements_by_id

  1. 通过标签定位

  • 定位一个元素:find_element_by_id

  • 定位多个元素:find_elements_by_id

  1. 通过类名进行定位

  • 定位一个元素:find_element_by_id

  • 定位多个元素:find_elements_by_id

  1. 通过css选择器进行定位

  • 定位一个元素:find_element_by_id

  • 定位多个元素:find_elements_by_id

# 找到百度首页的输入框
from selenium import webdriver driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element_by_id('kw')

六、定位元素另一种写法

  • 需引入By模块

from selenium import webdriver
from selenium.webdriver.common.by import By driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element(By.ID, 'kw')

七、元素的交互

  • 点击某个元素:click()

  • 模拟输入:send_keys()

  • 清除操作:clear()

  • 提交表单:submit()

  • 获取元素的属性值:get_attribute(name)

  • 获取元素的位置:location

  • 获取元素的文本值:text

  • 获取元素的大小:size

  • 获取元素的id值:id

  • 获取元素的标签名:tag_name

#  在百度输入框中输入我是autofelix,并点击搜索按钮
from selenium import webdriver driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element_by_id('kw').send_keys('我是autofelix')
driver.find_element_by_id('su').click()

八、执行JS

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window() driver.get('https://www.baidu.com') js_sql = '''
document.getElementById('kw').value = '我是autofelix'
'''
driver.execute_script(js_sql)

九、操作Frame

  • 网页中frame的话,需要执行切入切出操作

  • switch_to.from(子iframe的id名称) 切入

  • switch_to.parent_frame(父iframe的id名称) 切出

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window() driver.get('https://www.baidu.com') //这个网址并没有iframe,我臆测有,你们看看就行
driver.switch_to.frame('我臆测出来的iframe')

十、cookie操作

  • 删除当前页面所有cookies:delete_all_cookies()

  • 获取指定cookie值:get_cookie(name)

  • 获取当前页面所有cookies值:get_cookies()

  • 设置cookie值:add_cookie()

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window() driver.get('https://www.baidu.com') driver.delete_all_cookies()
driver.add_cookie({'name': 'name', 'domain': '.baidu.com', 'value': 'autofelix'})

十一、选项卡管理

  • 保存所有选项卡的元组:window_handles

  • 切换选项卡:switch_to.window()

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window() driver.get('https://www.baidu.com')
driver.get('https://www.taobao.com') driver.switch_to.window(driver.window_handles[0])
driver.switch_to.window(driver.window_handles[1])

十二、鼠标事件

  • 鼠标事件需要引入ActionChains模块

  • 鼠标右击:move_to_element(above)

  • 鼠标双击:double_click()

  • 左键按住拖动:drag_and_drop()

  • 动作存储:perform()

# 滑动滑块验证码
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC # 初始化谷歌浏览器
driver = webdriver.Chrome() # 最大化窗口
driver.maximize_window() # 打开头条登陆网址
driver.get('https://sso.toutiao.com') # 等待某个元素是否出现
WebDriverWait(self.driver, 10).until(
EC.text_to_be_present_in_element((By.XPATH, '//*[@id="mobile-code-get"]/span'), u'发送')
) # 实例化鼠标操作
action = ActionChains(self.driver) # 按住滑块
action.click_and_hold(self.driver.find_element_by_xpath('//*[@id="captcha_container"]')).perform() # 将滑块移动x的距离
action.move_by_offset(xoffset=x, yoffset=0).perform() # 释放滑块
action.release().perform()

十三、等待

  • 隐氏等待:如果到一定时间,指定的元素还没有出现,进程不会阻塞,但是到指定时间还没有找到,就会抛出异常

  • 显示等待:如果在一定时间内,指定的元素没有出现,进程会阻塞在这里,如果到指定时间还没有找到,就会抛出异常

# 隐氏等待
from selenium import webdriver driver = webdriver.Chrome()
driver.implicitly_wait(10) driver.get('https://www.baidu.com')
# 显示等待
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome()
driver.implicitly_wait(10) driver.get('https://www.baidu.com')
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'kw'))
)

十四、前进后退刷新

  • 后退:back()

  • 前进:forward()

  • 刷新:refresh()

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.get('https://www.taobao.com')
driver.get('https://www.jd.com') driver.back()
driver.forward()
driver.refresh()

十五、关闭浏览器

  • 关闭当前标签页:close()

  • 关闭整个浏览器:quit()

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
//打开百度页面后,关闭整个浏览器
driver.quit()

python 模块之 selenium 自动化使用教程的更多相关文章

  1. python模块 - pywinauto(windows自动化安装软件)

    GUI 窗口查询工具 spy++lite pywinauto 模块 原理: https://www.cnblogs.com/testlife007/p/4710599.html pywhinayto ...

  2. Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest

    前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...

  3. 【目录】Python模块学习系列

    目录:Python模块学习笔记 1.Python模块学习 - Paramiko  - 主机管理 2.Python模块学习 - Fileinput - 读取文件 3.Python模块学习 - Confi ...

  4. Python+Selenium自动化-安装模块和浏览器驱动操作方法

    Python+Selenium自动化-安装模块和浏览器驱动操作方法 1.安装模块文件 pip install selenium 2.安装浏览器驱动 我们主要用的浏览器驱动有chrome浏览器.fire ...

  5. python+selenium自动化软件测试(第2章):WebDriver API

    2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...

  6. Python+selenium自动化测试之浏览器基础操作

    **​​前言** 本文主要讲解webdriber框架,Selenium 就像真实用户所做的一样,Selenium 测试可以在 Windows.Linux 和 Macintosh上的 Internet ...

  7. Python+Selenium自动化总结

    Python+Selenium自动化总结 1.环境搭建 1.1.安装selenium模块文件 pip install selenium 1.2.安装ChromeDriver驱动 [1]下载安装Chro ...

  8. 【Python selenium自动化环境配置】4步搞定ChromeDriver版本选择

    很多刚做自动化的小伙伴,会在ChromeDriver版本选择时犯难,看来大家都被坑过,真正掌握独门绝技,都不是难事儿. 看好了主要步骤就4部 1.确定谷歌浏览器版本 2.找到谷歌浏览器版本与Chrom ...

  9. python+selenium自动化登录dnf11周年活动界面领取奖励登录部分采坑总结[1]

    背景: Dnf的周年庆活动之一,游戏在6月22日 06:00~6月23日 06:00之间登陆过游戏后可以于6月25日 16:00~7月04日 06:00领取奖励 目标:连续四天自动运行脚本,自动领取所 ...

随机推荐

  1. ASP.NET Core 6框架揭秘实例演示[04]:自定义依赖注入框架

    ASP.NET Core框架建立在一个依赖注入框架之上,已注入的方式消费服务已经成为了ASP.NET Core基本的编程模式.为了使读者能够更好地理解原生的注入框架框架,我按照类似的设计创建了一个简易 ...

  2. Note -「圆方树」学习笔记

    目录 圆方树的定义 圆方树的构造 实现 细节 圆方树的运用 「BZOJ 3331」压力 「洛谷 P4320」道路相遇 「APIO 2018」「洛谷 P4630」铁人两项 「CF 487E」Touris ...

  3. CMake 交叉编译

    CMake 交叉编译 交叉编译就是说在平台 A (宿主机)上编译出可以在平台 B (目标机) 上运行的程序,比如在 x86 上编译 ARM 程序 要交叉编译首先要去下载目标平台的工具链,比如要编译 A ...

  4. VUE学习笔记(李天禹老师版本)

    目录 VUE 一 脚手架文件结构 二 关于不同版本的Vue 三 vue.config.js配置文件 vue文件的基本结构 components 四 ref属性 TIPS 五 props配置项 Tips ...

  5. 实力再获认可!Smartbi入选爱分析·产业数字化厂商全景报告

    近日,中国独立的第三方产业数字化研究与咨询机构--爱分析发布<2021爱分析·产业数字化厂商全景报告>.思迈特软件凭借优秀的解决方案能力及丰富的业务实践经验,入选报告中银行数字化.保险数字 ...

  6. EasyUI Datagrid 数据网格 点击选中行 再次单击取消选中行

    适用于jquery-easyui-1.9.15版本: 在项目中全局搜索: opts.singleSelect==true 或者在jquery.easyui.min.js中搜索: opts.single ...

  7. 【C# .Net GC】延迟模式 latencyMode 通过API-GC调优

    延迟模式 lowlatency 使用环境:后台工作方式只影响第 2 代中的垃圾回收:第 0 代和第 1 代中的垃圾回收始终是非并发的,因为它们完成的速度很快.GC模式是针对进程配置的,进程运行期间不能 ...

  8. Windows操作下各种工具常用快捷键

    目录 Windows快捷键 谷歌浏览器快捷键 Nodepad++快捷键 Mobaxterm快捷键 Markdown快捷键 Windows快捷键 Win + E打开文件系统 Win + L锁屏 谷歌浏览 ...

  9. SQL Server Cross/Outer Apply

    SQL Server2005引入了APPLY运算符,它非常像连接子句,它允许两个表达式直接进行连接,即将左/外部表达式和右/内部表达式连接起来. CROSS APPLY(类比inner join)和O ...

  10. javaScript(js)手写原生任务定时器源码

    javaScript(js)手写原生任务定时器 功能介绍 定时器顾名思义就是在某个特定的时间去执行一些任务,现代的应用程序早已不是以前的那些由简单的增删改查拼凑而成的程序了,高复杂性早已是标配,而任务 ...