一、安装

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. 06.python语法入门--与用户交互、运算符

    与用户交互 输入 input    # python2与python3的区别        '''python3'''    # 将获取到的用户输入赋值给变量名res    res = input(' ...

  2. 基于zynq XC7Z100 FMC接口通用计算平台

    1.板卡概述 此板卡是北京太速研发,由SoC XC7Z100-2FFG900I芯片来完成卡主控及数字信号处理,XC7Z100内部集成了两个ARM Cortex-A9核和一个kintex 7的FPGA, ...

  3. python-利用xlrd模块读取excel数据,将excel数据转换成字典格式

    前言 excel测试案例数据 转换成这种格式 实现代码 import os import xlrd excel_path = '..\data\\test_case.xlsx' data_path = ...

  4. C# 提取Word中插入的多媒体文件(视频、音频)

    在Word中可将文件通过OLE对象嵌入的方式插入到文档,包括Word.excel.PDF.PPT.图片.宏文件.文件包等在内的多种文件类型.对文档中已插入的文档对象,也可通过本文中的方法提取出来另存到 ...

  5. 网络测试技术——802.1X原理

    一.以太网优点缺点 1.以太网优点 (1)即插即用,简单快捷 (2)任何一台电脑只要接入网络便有访问网络资源的权限 2.以太网缺点 (1)缺乏安全认证机制(二层) (2)电脑接到交换机上就能访问网络 ...

  6. RFC2889广播时延测试——网络测试仪实操

    一.简介 RFC 2889为LAN交换设备的基准测试提供了方法学,它将RFC 2544中为网络互联设备基准测试所定义的方法学扩展到了交换设备,提供了交换机转发性能(Forwarding Perform ...

  7. 2020.11.2 异步IO 协程

    异步IO 同步IO在一个线程中,CPU执行代码的速度极快,然而,一旦遇到IO操作,如读写文件.发送网络数据时,就需要等待IO操作完成,才能继续进行下一步操作. 在IO操作的过程中,当前线程被挂起,而其 ...

  8. C语言刷“矩阵”类题目(2维矩阵/2级指针)

    566. 重塑矩阵 int** matrixReshape(int** mat, int matSize, int* matColSize, int r, int c, int* returnSize ...

  9. vue项目部署到IIS服务器上

    前端Vue项目需要部署到IIS服务器上: 准备工作: 1:部署IIS服务器 2:项目npm run build打包生成需要部署的文件(dist文件夹)我的是manage文件夹 开始部署: 1:复制文件 ...

  10. qt(一)

    一.Qt安装 qt离线安装地址:http://download.qt.io/archive/qt/ 参考教程:https://blog.csdn.net/u013934107/article/deta ...