一、安装

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. 二进制安装tomcat

    一.安装JDK 1.1 下载JDK 官网下载地址 1.2 安装JDK #cat install_jdk.sh #!/bin/bash DIR=`pwd` JDK_FILE="jdk-8u29 ...

  2. Solution -「LOJ #6029」「雅礼集训 2017」市场

    \(\mathcal{Description}\)   Link.   维护序列 \(\lang a_n\rang\),支持 \(q\) 次如下操作: 区间加法: 区间下取整除法: 区间求最小值: 区 ...

  3. Solution -「NOI 2016」「洛谷 P1587」循环之美

    \(\mathcal{Description}\)   Link.   给定 \(n,m,k\),求 \(x\in [1,n]\cap\mathbb N,y\in [1,m]\cap \mathbb ...

  4. Python基础—迭代器、生成器(Day13)

    一.迭代器 1.可迭代对象:遵循可迭代协议,内部含有__iter__方法的对象就叫做可迭代对象.(str.list.tulpe.dict.set) 查询数据类型的方法 s = 'laonanhai' ...

  5. SpringBoot 自定义参数类型转换convert

    创建一个配置类.使用 @bean注入到容器中 @Bean public WebMvcConfigurer webMvcConfigurer(){ /** * 实现自定义的addConverter */ ...

  6. Prometheus之Dockerfile编写、镜像构建、容器启动

    目录 从官方镜像启动:prom/prometheus 官方Dockerfile分析 编写自己的Dockerfile 构建镜像: 启动容器: 从官方镜像启动:prom/prometheus 拉取镜像 $ ...

  7. 分布式缓存NCache使用

    NCache作为缓存优点币Redis有优势,但是收费的所以选用的不多吧.下面简单实操一下: 首先官网下载组件NCache Download Center (alachisoft.com),这里选择企业 ...

  8. kali linux 中python2不带pip的解决方法

    在使用kali2020版本时,发现pip只能安装python3的模块,没办法安装python2模块,但是我有需要用到python2来运行脚本,在此贴出解决办法 https://bootstrap.py ...

  9. 2021年都要过去啦,你还在用Excel做数据可视化效果吗?

    2021年都要过去啦,你还在用Excel做数据可视化效果吗?古语有云,"工欲善其事,必先利其器",没有专业的工具,前期准备的再好也是白搭.现在运用数据可视化工具于经营活动中的企业是 ...

  10. 【C#基础概念】函数参数默认值和指定传参和方法参数

    函数参数默认值和指定传参 最近在编写代码时发现介绍C#参数默认值不能像PL/SQL那样直接设置default,网上也没有太多详细的资料,自己琢磨并试验后整理成果如下: C#允许在函数声明部分定义默认值 ...