Python爬虫之Web自动化测试工具SeleniumChrome handless

news2024/11/15 13:03:00


请添加图片描述

@作者 : SYFStrive

@博客首页 : HomePage

🥧 上一篇续文传送门

📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗

📌:如果觉得文章对你有帮助可以点点关注 👉:专栏连接🔗

💃:程序员每天坚持锻炼💪

🔗:
阅读文章
请添加图片描述

📋目录

  • Selenium简介
    • 为什么使用selenium❓
    • 如何安装selenium❓
    • selenium的使用步骤❓
      • selenium获取🔍源码练习
      • selenium获取🛒源码练习
    • selenium之元素定位❓
      • 方法
      • 访问的相关使用
      • 交互的相关使用
    • 小总结✍
    • Chrome handless
      • 简介
        • 系统要求
        • Chrome handless相关使用
        • Chrome handless简单封装
  • 最后

Selenium简介

  1. Selenium是一个用于Web应用程序测试的工具。
  2. Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。(真正的用户还不给数据那么网站存在的意义是什么?)
  3. 支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动
    真实浏览器完成测试。
  4. selenium也是支持无界面浏览器操作的。
  5. 缺点:有点慢

为什么使用selenium❓

模拟浏览器功能,自动执行网页中的js代码,实现动态加载

如何安装selenium❓

步骤:

  1. 下载对应浏览器版本驱动
  2. 查看自己浏览器的版本 (如以🛠为例:谷歌浏览器右上角‐‐>帮助‐‐>关于)
  3. 以🛠浏览器为例:驱动下载:点击跳转
  4. 把下载好的放驱动放在项目的目录下
  5. 安装语法:pip install selenium
  6. 其他驱动
驱动名链接
GGhttps://chromedriver.chromium.org/downloads
Eehttps://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
🦊https://github.com/mozilla/geckodriver/releases
🍏https://webkit.org/blog/6900/webdriver-support-in-safari-10/

selenium的使用步骤❓

  • 因为随着 selenium版本的升级一些语法也随之发生改变请参考 👇 文档(不懂的可以私聊我互相交流)
  • 官方文档:点击跳转至官方
  • selenium文档:直接跳至selenium文档
  • 导入:from selenium import webdriver
  • 创建谷歌浏览器操作对象:
    1. path = 谷歌浏览器驱动文件路径
    2. bor= webdriver.Chrome(path)
  • 访问网址
    1. url = 要访问的网址
    2. bor.get(url) = 自动打开浏览器
  • 获取内容
    1. content = bor.page_source = 获取爬取的源码

selenium获取🔍源码练习

📰代码演示:

在这里插入图片描述

如果出现下面的报错不要慌:问题出现在浏览器驱动版本不一致 或者 高于当前浏览器版本(下载对应的驱动即可)

在这里插入图片描述
如下图(成功🆗):

在这里插入图片描述
请添加图片描述

selenium获取🛒源码练习

📰代码演示:

在这里插入图片描述

如下图(成功🆗):

在这里插入图片描述
请添加图片描述

selenium之元素定位❓

说明:元素定位:自动化要做的就是模拟鼠标和键盘来操作来操作这些元素,点击、输入等等。操作这些元素前首先要找到它们,WebDriver提供很多定位元素的方法(比如:自动抢票等😀)

方法

🔋:表示常用
推荐:博客园文章关于元素定位的相关使用:👉点击跳转🔗
常用的六种方法方法:(对应关系 (这是旧版的(报错但不影响使用)) =>(新版):使用新版需要导入:from selenium.webdriver.common.by import By

方法使用举例
find_element_by_id=>find_element(By.ID, “ID”)eg:button = bor.find_element_by_id(‘id值’) 🔋
find_elements_by_name=>find_element(By.NAME, “NAME”)eg:name = bor.find_element_by_name(‘input里面的name’)
find_element_by_xpath=>find_element(By.XPATH, “XPATH”)eg:xpath1 = bor.find_element_by_xpath(‘//input[@id=“id值”]’) 返回值 🔋
find_elements_by_tag_name=>find_element(By.NAME, “NAME”)eg:names = bor.find_elements_by_tag_name(‘标签名’)
find_elements_by_css_selector=>find_element(By.CSS_SELECTOR, ‘#J_footer’)eg:my_input = bor.find_elements_by_css_selector(‘这里简单记使用的是Bs4语法’)[0]🔋
find_elements_by_link_text=>find_element(By.LINK_TEXT, ‘秒杀’)eg:bor.find_element_by_link_text(“页面中的链接文本”)
find_element(By.CLASS_NAME, “CLASS_NAME”)eg:name = bor.find_elements(By.CLASS_NAME, “秒杀”)
方法对比
find_element VS find_elements 一个返回的是值,一个是列表

📰代码演示:

在这里插入图片描述

如下图(成功🆗):

在这里插入图片描述

访问的相关使用

说明:定位到元数后获取该元素的文本、类,Id名等等……

访问元素信息:

  • 获取元素属性
    .get_attribute(‘class’)
  • 获取元素文本
    .text
  • 获取标签名
    .tag_name

📰代码演示:

在这里插入图片描述

如下图(成功🆗)

请添加图片描述

交互的相关使用

说明:如自动打开🔍然后输入大司马然后点击他的简介进行查看(自动执行(刷起来))

交互:

  • 点击:click()
  • 输入:send_keys()
  • 后退操作:bor.back()
  • 前进操作:bor.forword()
  • 模拟JS滚动:
    1. js=‘document.documentElement.scrollTop=100000’
    2. bor.execute_script(js) 执行js代码
  • 退出:bor.quit()

📰代码演示:

在这里插入图片描述

如下图(全自动的(gif太大传不了,可以自己把time设置大一点感受)🆗):

链接👉: 点击查看

小总结✍

**使用步骤:**使用selenium获取源码 👉 定位元素 👉 访问元素 👉 模拟交互

Chrome handless

简介

  1. Chrome handless 跟 Selenium使用方法差不多,使用起来速度比Selenium更快
  2. Chrome-headless 模式, Google 针对 Chrome 浏览器 59版 新增加的一种模式,可以让你不打开UI界面的情况下
  3. 使用 Chrome 浏览器,所以运行效果与 Chrome 保持完美一致。
  4. 优点:快
  5. 缺点:无界面

系统要求

  • 系统要求:
    1. Chrome
    2. Unix\Linux 系统需要 chrome >= 59
    3. Windows 系统需要 chrome >= 60
    4. Python3.6
    5. Selenium==3.4.*
    6. ChromeDriver==2.31

Chrome handless相关使用

  • 配置固定模板:

在这里插入图片描述

📰代码演示:

在这里插入图片描述

如下图(成功🆗):

在这里插入图片描述

Chrome handless简单封装

在这里插入图片描述

最后

本文章到这里就结束了,觉得不错的请给我专栏点点订阅,你的支持是我们更新的动力,感谢大家的支持,希望这篇文章能帮到大家

点击跳转到我的Python专栏

在这里插入图片描述

下篇文章再见ヾ( ̄▽ ̄)ByeBye

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/406119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python流星雨代码

前言 用Python画场流星雨看看,源码见文末公众号哈。 流星类 def __init__(self): self.r ra.randint(50,100) self.t ra.randint(1,3) self.x ra.randint(-2000,1000) #流星的横坐标 self.y ra.randint(0,500) #流星…

出道即封神的ChatGPT,现在怎么样了?

从互联网的普及到智能手机,都让广袤的世界触手而及,如今身在浪潮中的我们,已深知其力。前阵子爆火的ChatGPT,不少人保持观望态度。现如今,国内关于ChatGPT的各大社群讨论,似乎沉寂了不少,现在怎…

Web自动化测试怎么做?Web自动化测试的详细流程和步骤

一、什么是web自动化测试 自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目…

使用node命令提示: ‘node‘ 不是内部或外部命令,也不是可运行的程序

报错:使用node命令提示: ‘node‘ 不是内部或外部命令,也不是可运行的程序 原因:没安装node.js 或者 没配置好环境变量 情况1:安装node.js: 在官网下载 .msi 文件:Node.js 中文网 (nodejs.cn) 步骤 1 : 下…

使用Freemarker来生成pdf文件

2022-09-02 今天接到一个生成pdf的任务,并且web端要能下载;在网上也找了许多的工具如:itext等,感觉挺复杂的没那么好用,然后想起了之前使用Freemarker来生成world文档,挺好用的,然后调查发现也能…

【JavaWeb】重新认识 Servlet 的初始化 [ 回顾 Servlet ]

🥇作者 .29. 的✔博客主页✔ 🥇记录JavaWeb学习的专栏:Web专栏 🥇向前走,不要回头。 您的点赞,收藏以及关注是对作者最大的鼓励喔 ~~ 重新认识Servlet的初始化一、回顾Servlet1.什么是Servlet2.Servlet规范…

设置背景图片大小的方法

背景图片大小设置 语法:background-size:宽度 高度;作用:设置背景图片大小取值: 取值场景数字px简单方便,常用百分比相当于当前盒子自身的宽高百分比contain包含,将背景图片等比例缩放,直到不…

Vue 之 echarts 图表数据可视化的基础使用(简单绘制各种图表、地图)

Vue 之 echarts 图表数据可视化的基础使用(简单绘制各种图表、地图) 目录 Vue 之 echarts 图表数据可视化的基础使用(简单绘制各种图表、地图) 一、简单介绍 二、环境搭建 三、使用 echarts 四、自动缩放 echarts 五、数据更…

【网络通信】websocket如何断线重连

Vue <template><div><button click"sendDevName(xxxxxxxx)">发送</button>{{data}}</div> </template><script> export default {name: HelloWorld,data () {return {data: null}},// html加载完成后执行initWebSocket()…

Vue3-路由跳转专题详细总结

一、基本路由 点击事件似乎可以使用模板更改视图中的内容&#xff0c;个人认为与路由的区别是路由能使网页中的地址栏发生变化 请先阅读基础第二篇 1.创建一个组件,并引入 2.js文件中配置路径 //name相当于别名{path:/tabView,component:TabView},{name:myComPany,path:compan…

Vue3项目搭建全过程

目录 一、前言 二、搭建准备 三、搭建项目 四、启动项目 一、前言 在2020年的9月19日&#xff0c;万众期待的Vue3终于发布了正式版&#xff0c;命名为“One Piece”。 它也带来了很多新的特性&#xff1a;更好的性能、更小的包体积、更好的TypeScript集成、更优秀的API设…

前端面试真题宝典(一)

面试题真题 闭包和柯里化 闭包是什么&#xff1f;闭包是能够读取其他函数内部变量的函数 柯里化是什么&#xff1f;柯里化是把一个多个参数的函数转化为单参数函数的方法 闭包的用途&#xff1a;闭包的主要用途是为了不污染全局变量&#xff0c;用闭包的局部变量来做一些库…

30个题型+代码(冲刺2023蓝桥杯)(中)

2023.3.13~4.13持续更新 目录 &#x1f34e;注意 &#x1f33c;前言 &#x1f33c;十&#xff0c;KMP&#xff08;留坑&#xff09; &#x1f33c;十一&#xff0c;Trie&#xff08;留坑&#xff09; &#x1f33c;十二&#xff0c;BFS &#x1f44a;(一)1562. 微博转发…

获取街道、镇级的地图geoJson数据方法,使用echarts绘制出街道、镇级的地图区域画面(中山市为例)

一、需求 1、在echarts上绘制市级以下的区、县的区域地图。 2、在市级下很多都是有区、县的区域&#xff0c;而少部分是不存在区、县的&#xff0c;是直接市下面一级就是街道、镇级别的区域。 3、统一管理区域数据&#xff0c;有区县的市直接拿区县的geoJson数据&#xff0c;没…

炸弹人小游戏代码开源(python)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放&#xff0…

Ajax--》请求操作以及跨域相关讲解

目录 jQuery中的Ajax 请求超时与网络异常处理 取消请求 Ajax请求—fetch() 跨域 jQuery中的Ajax 在jQuery中应该如何发送Ajax请求呢&#xff1f;看到这篇文章你就能大概了解到如何在jQuery中发送Ajax。 要想使用jQuery框架&#xff0c;肯定是需要引进jQuery资源的&#…

CSS实现单行、多行文本溢出显示省略号(…)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录一、单行超出显示省略号二、多行超出显示省略号一、单行超出显示省略号 描述&#xff1a;如果文字超出父元素指定宽度&#xff0c;文字会自动换行&#xff0c;而连续…

Node.js——文件模块和路径模块(读写文件,处理路径)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿 offer&#xff08;秋招&#xff09; &#x1f947;推荐学习&…

MySQL - 死锁的产生及解决方案

MySQL - 死锁的产生及解决方案1. 死锁与产生死锁的四个必要条件1.1 什么是死锁1.2 死锁产生的4个必要条件2. 死锁案例2.1 表锁死锁2.2 行锁死锁2.3 共享锁转换为排他锁3. 死锁排查4. 实例分析4.1 案例描述4.2 案例死锁问题复现4.3 死锁排查4.4 解决死锁5. 如何避免死锁1. 死锁与…

【保姆级】JMeter Mqtt 压测配置

忽然有个紧急任务要对某个服务做MQTT做压测&#xff0c;紧急实操下JMeter&#xff0c;这里记录下非专业测试员的测试过程、(▽&#xff40;)&#xff0c;欢迎&#x1f44f;大家检查指点(&#xffe3;∇&#xffe3;)/下载⏬工具JMeter官方下载地址https://jmeter.apache.org/do…