一、安装

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. 垃圾陷阱 && [NOIP2014 提高组] 飞扬的小鸟

    #include<bits/stdc++.h> using namespace std; int d,n,dp[1010]; struct node{int t,f,h;} a[1010] ...

  2. Web设计

    架构:配置中心(数据发布与订阅),配置共享,服务发现,微服务鉴权,网关,负载均衡, 设计:分布式锁,延时队列 业务:日志.链路跟踪,灰度, 日志:(面向领域.业务.基础架构) 通信协议:http(1. ...

  3. Solution -「SPOJ-VCIRCLES」Area of Circles

    \(\mathcal{Description}\)   Link.   求平面上 \(n\) 个圆的并的面积.   \(n\le50\),可能被圆覆盖的横纵坐标区域在 \([-10^4,10^4]\) ...

  4. WPF之复选MVVM TreeView(TreeView+CheckBox)

    需求背景: 当我们用到权限菜单栏时权限菜单栏属于递归效果,我们需要用到TreeView+CheckBox进行组合复选开发时,我们需要解决此类问题时怎么办,那么就引出今天的小笔记内容 实现方式: 下载M ...

  5. 大厂晋升指南:材料准备,PPT 写作和现场答辩

    大部分公司在年初,都是绩效回顾.晋升答辩的时期,对于阿里.美团等不少互联网企业,财年是从前一年的 4 月到第二年的 3 月底,春节回来以后,就是一年一度的述职晋升环节. 这里我结合自己述职以及辅导其他 ...

  6. 运行EXE文件,系统提示缺少api-ms-win-crt-runtime-l1-1-0.dll,解决方法!!

    api-ms-win-crt-runtime-l1-1-0.dll是一个Windows系统的应用程序拓展文件,也叫动态链接库文件.这个文件能帮助绝大多数用户解决在安装或启动部分游戏软件时出现计算机中丢 ...

  7. 把SQLAlchemy查询对象转换成字典

    1-假设查出来的为单个对象 1-1 在model.py中为模型对象添加字典转换函数: from exts import db class User(db.Model): __tablename__ = ...

  8. Clickhouse - MergeTree原理

    Clickhouse - MergeTree原理 MergeTree引擎以及隶属于MergeTree引擎族的所有引擎是Clickhouse表引擎中最重要, 最强大的引擎. MergeTree引擎族中的 ...

  9. springboot页面国际化

    引入依赖pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  10. 什么是闭包?(python)

    闭包,又称闭包函数或闭合函数,和嵌套函数类似.不同之处在于,闭包函数的外部函数返回的不是一个具体的值,而是一个函数.一般情况下,返回的函数会赋值给一个变量,便于反复调用. def outer(out) ...