python 包之 selenium 自动化使用教程

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')
  • 定位一个元素:find_element_by_id()
  • 定位多个元素:find_elements_by_id()

  • 定位一个元素:find_element_by_name()

  • 定位多个元素:find_elements_by_name()

  • 定位一个元素:find_element_by_xpath()

  • 定位多个元素:find_elements_by_xpath()

  • 定位一个元素:find_element_by_link_text()

  • 定位多个元素:find_elements_by_link_text()

  • 定位一个元素:find_element_by_partial_link_text()

  • 定位多个元素:find_elements_by_partial_link_text()

  • 定位一个元素:find_element_by_tag_name()

  • 定位多个元素:find_elements_by_tag_name()

  • 定位一个元素:find_element_by_class_name()

  • 定位多个元素:find_elements_by_class_name()

  • 定位一个元素:find_element_by_css_selector()

  • 定位多个元素:find_elements_by_css_selector()
找到百度首页的输入框
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()
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的话,需要执行切入切出操作
  • 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')
  • 删除当前页面所有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()
  • 隐式等待:如果指定的元素在某个时间没有出现,进程不会阻塞,但如果在指定的时间没有找到,则会抛出异常。
    [En]

    implicit wait: if the specified element does not appear at a certain time, the process will not block, but an exception will be thrown if it is not found at the specified time.*

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

    display wait: if the specified element does not appear within a certain period of time, the process will block here, and if it is not found by the specified time, an exception will be thrown*

隐氏等待from selenium import webdriverdriver = webdriver.Chrome()driver.implicitly_wait(10)driver.get('https://www.baidu.com')
显示等待from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECdriver = 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 webdriverdriver = 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 webdriverdriver = webdriver.Chrome()driver.get('https://www.baidu.com')//打开百度页面后,关闭整个浏览器driver.quit()

Original: https://www.cnblogs.com/sunnyeden/p/16046382.html
Author: sunnyeden
Title: python 包之 selenium 自动化使用教程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/509764/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Pandas实战-筛选DataFrame

    本文将主要介绍以下内容: 针对内存使用优化数据集 按单一条件筛选 按多个条件筛选 其它筛选方法 处理重复项 在前面的文章中,我们练习了从DataFrame中选择单独的行,列和值。现…

    Python 2023年8月8日
    051
  • python判断图片类型_pygame图像Python碰撞检测(图像类型:png)

    我想制作碰撞检测脚本。在 当我运行脚本时Pygame总是说图像发生冲突。在 当我使用{“rect = cat1.img.get_rect()” then &…

    Python 2023年9月22日
    048
  • Python实现酷炫的动态交互式数据可视化,附代码

    这是本文的目录 前言 * 数据可视化 图1:PCA方差图 图 2:Celluloid例子 图三:特斯拉数据集 图4:Plotly例子 图5:Bokeh 演示 图6 Seaborn …

    Python 2023年8月31日
    058
  • WinDbg Preview安装以及符号表配置

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 弹尽粮绝,会员救园:…

    Python 2023年10月19日
    055
  • Kafka学习(七) 消费者组与消费者偏移量

    消费者组与消费者偏移量 消费者组 具有相同组ID的消费者就属于同一个消费者组,它有如下特点: 一个组可以有多个消费者 主题中的消息只能被同一个组中的一个消费者消费 一个主题可以被多…

    Python 2023年6月12日
    073
  • 给程序员的Web3入门指南

    上海疫情,在家封了快三个月。居家办公也有好处,省去了通勤,业余时间多出来一块,可以研究一些自己感兴趣的东西。于是陆陆续续看了快两个月的Web3,买了自己的ENS,人生中第一个NFT…

    Python 2023年10月9日
    042
  • 【Pygame一行代码系列】程序员玩的这几款电脑游戏,你玩过吗?

    前言 哈喽哈喽!今日上线学到了一手,这个分享很简单的小游戏! (很多小可爱应该见过,那就分享给没见过的小朋友吧~) 序员在忙完一天的工作(编码)以后,适当的放松一下自己,玩玩游戏,…

    Python 2023年9月19日
    057
  • python-tkinter小程序之数独游戏

    提前透露: 大家好,我是涵子。看到了上面的图片了吗? 一看就知道:这不就是一个数独吗?今天我要为大家带来tkinter-gui版的数独! python小游戏:建议你去看一看哦~(都…

    Python 2023年9月23日
    067
  • python数据透视表计数去除重复_如何用Python实现数据透视表?解除你对透视表的疑惑!…

    相信接触过Excel的小伙伴都知道,Excel有一个非常强大的功能数据透视表可以自由选择不同字段,用不同的聚合函数进行汇总,并建立交叉表格,用以从不同层面观察数据。这么强大的功能,…

    Python 2023年8月21日
    037
  • 用python的pandas读取excel文件中的数据

    一、读取Excel文件 使用pandas的 read_excel()方法,可通过文件路径直接读取。注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上…

    Python 2023年8月1日
    054
  • django框架

    Django 手动搭建简易web框架 django框架简介 django三板斧与request对象方法 路由层 视图层 模板语法 ORM基本使用 ORM进阶操作 Django序列化…

    Python 2023年6月12日
    062
  • python中 s 用法_pandas基本用法Python

    一、merge函数用途 pandas中的merge()函数类似于SQL中join的用法,可以将不同数据集依照某些字段(属性)进行合并操作,得到一个新的数据集。 二、merge()函…

    Python 2023年8月8日
    037
  • Pytest学习-Fixture调用方法

    Pytest学习-Fixture调用方法 原创 我的事说来话长2022-08-05 20:25:43博主文章分类:Pytest ©著作权 文章标签 pytest 文章分类 Pyth…

    Python 2023年5月24日
    059
  • python–飞机大战

    项目名称:python飞机大战编程语言:python用到关键知识:pygame模块,python基础,os文件读写,以及面向对象思想方法!实现功能:1:飞机的移动,发射子弹,手雷,…

    Python 2023年11月5日
    025
  • python 抓取视频并显示下载进度

    import os import requests from tqdm import tqdm VIDEO_PATH = r’videos’ def download(url,fn…

    Python 2023年6月10日
    058
  • Pandas去重函数:drop_duplicates()

    “去重”通过字面意思不难理解,就是删除重复的数据。在一个数据集中,找出重复的数据删并将其删除,最终只保存一个唯一存在的数据项,这就是数据去重的整个过程。删除…

    Python 2023年8月7日
    05.9K
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球