【Selenium上】——全栈开发——如桃花来

目录索引

  • ==Selenium是什么:==
  • ==下载和配置环境变量:==
  • ==1. 基本使用:==
    • 导入五个常用包:
    • 基本代码:
  • ==实例引入:==
  • ==声明不同浏览器对象:==
  • ==访问页面:==

Selenium是什么:

  • Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
  • 可以在一定程度上避免JS逆向的干扰

你问我selenium是什么?那我只能告诉你这是个高科技超级武器,爬虫界的神,可以让你节省极大的时间和简化代码的复杂程度。

下载和配置环境变量:

'''
1,安装selenium
	-- 命令:pip install selenium
	-- 网络不稳的请换源安装:pip install selenium -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

2,打开百度,输入chrome webdriver,下载谷歌浏览器webdriver驱动
	-- http://npm.taobao.org/mirrors/chromedriver/
	-- 根据自己谷歌版本选择驱动器
	-- 选择对应版本,如果没有对应版本选择跟谷歌版本相近但不超过谷歌版本的
	-- 下载后解压

3,拷贝到python安装路径
	-- 找到Lib目录
	-- 进入site-packages目录,将下载好的chromedriver.exe程序驱动放进该目录文件里
	--如何找到Python安装路径  可以打开cmd,输入where Python
	

4,配置环境变量
	-- 将webdriver驱动所在文件路径复制
	-- 添加到系统环境变量里的Path路径里

5,验证是否配置完成
	-- from selenium import webdriver
	   a = webdriver.Chrome()
	   a.get('https://www.baidu.com/')


6,如果上述操作报错,执行以下方法:
	-- 将下载的驱动放入python环境的Scripts的文件夹里
	-- 再将路径添加到环境变量(如果安装python时勾选了自动添加环境变量这步可省略)

7,上述两种方法还报错,执行以下方法:
	-- 将下载的驱动放进项目根目录
'''
from selenium import webdriver

a = webdriver.Chrome()
a.get('https://www.baidu.com/')

如果在运行后发现网页会自动打开,就代表下载成功了!

1. 基本使用:

从上到下的代码都是连续的,但是为了方便学习,这里将它分别拆开来看。

导入五个常用包:

from selenium import webdriver #驱动浏览器
from selenium.webdriver.common.by import By #选择器,用于选择
from selenium.webdriver.common.keys import Keys #按键,起到鼠标点击的作用
from selenium.webdriver.support import expected_conditions as EC #等待所有标签加载完毕
from selenium.webdriver.support.wait import WebDriverWait #等待页面加载完毕,寻找某些元素


注释:

  • 驱动浏览器
  • 选择器,用于选择
  • 按键,起到鼠标点击的作用
  • 等待所有标签加载完毕
  • 等待页面加载完毕,寻找某些元素

基本代码:

browser = webdriver.Chrome() #browser驱动对象,实例化一个对象
browser.get("网址地址") #调用浏览器驱动对象访问站点

注释:

  • browser驱动对象,实例化一个对象
  • 调用浏览器驱动对象访问站点
  • browser的中文释义是浏览器

实例引入:

1.打开百度
2.在搜索框输入爬虫
3.点击搜索按钮
  • 利用异常捕捉是因为设定了等待时间
try:
    #1.打开百度
    browser.get("https://www.baidu.com/") #调动浏览器驱动对象访问站点
    #2.输入python文本
    # text_input = browser.find_element(By.ID,"kw") #kw是搜索框的id名
    text_input = browser.find_element(By.XPATH,'//*[@id="kw"]')
    #向输入框中输入内容
    text_input.send_keys("美女")
    #按回车按钮
    text_input.send_keys(Keys.ENTER)
    #等待事件——会受网络的影响
    wait = WebDriverWait(browser,10)#参数一:浏览器对象 参数二:最大等待的秒数
    #等待的元素,如果该元素加载完毕则等待事件停止。如果超出时间还没加载出等待的元素,那么程序就会报错
    wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="s_tab"]/div/b')))#选什么元素自己决定
    print(browser.current_url)#看url
    print(browser.get_cookies())#看cookie
    print(browser.page_source)#看源代码
    input()#让页面卡住,不至于自动关闭

finally:#无论是否发生异常都会执行的代码块
    browser.close()#关闭浏览器

呈现效果:
在这里插入图片描述
总结:

1. text_input.send_keys()可以用来输入内容和按下按钮
2. wait是和wait.until搭配使用的。一个设置等待,一个设置等待元素
3. wait = WebDriverWait(浏览器驱动对象,最长等待时间)
4.  presence_of_element_located()方法中传入的参数格式一定是一个元组,别忘了!
5. 
	- browser.current_url 打印url
	- browser.get_cookies() 打印cookie信息
	- browser.page_source 查看源代码

声明不同浏览器对象:

selenium可以支持多种浏览器

from selenium import webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()

访问页面:

一些最简洁的访问页面的代码

from selenium import webdriver
#声明Chrome浏览器对象
browser = webdriver.Chrome()
#请求页面,返回的数据封装在了browser对象里面,不需要用额外的变量接收
browser.get('https://www.taobao.com')
#获取网页源代码
print(browser.page_source)
#关闭当前网页
browser.close()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么把pdf中的某一页分出来?

怎么把pdf中的某一页分出来?PDF格式的文档在日常生活中是非常常见的,相信大家都对其有所了解,并且经常使用。它的主要特点是不允许用户随意编辑其中的内容,当我们仅需要阅读时,PDF文档无疑是十分方便的,尤其…

Python爬虫解读

爬虫: Python爬虫是指利用计算机程序或者脚本自动抓取网站数据的一种行为,通常是为了提取网站数据或者进行数据分析等目的。 Python 爬虫可以分为手动爬虫和自动爬虫两种。手动爬虫是指完全由人工编写代码来实现的爬虫,这种方式需要编写大量的…

NAS私有云存储 - 搭建Nextcloud私有云盘并公网远程访问

文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 转载自内网穿透工具的文章:使用Nextcl…

Selenium自动化测试中的PageObject模式

PageObject模式简介 众所周知,UI页面元素常常是不稳定的,在使用Selenium编写WebUI自动化测试用例时,随着测试脚本的增加,维护和更新这些元素便成为一个令人头疼的问题。 在普通模式下,脚本直接定位并操作元素&#xf…

进程(一)

进程(一) 2.1 进程的定义、组成、组织方式、特征2.1.1 定义2.1.2 组成2.1.3 组织方式2.1.4 特征2.1.5 本小节总结 2.2 进程的状态与转换2.2.1 进程的状态2.2.3 进程状态的转换2.2.4 本小节总结 2.3 进程控制2.3.1 基本概念2.3.2 进程控制相关的原语2.3.3…

【Java零基础入门篇】第 ⑤ 期 - 抽象类和接口(二)

博主:命运之光 专栏:Java零基础入门 学习目标 1.了解什么是抽象类,什么是接口; 2.掌握抽象类和接口的定义方法; 3.理解接口和抽象类的使用场景; 4.掌握多态的含义和用法; 5.掌握内部类的定义方法…

vue学习

{{}} 插值语法,应用vue实例容器中,获取标签值 v-bind v-bind:单向绑定,实例对象key的对应的值,绑定到vue实例容器标签的属性中 简写:: v-model v-model:双向绑定 注意:v-model只能应用于‘表单…

MathType7简体中文版数学公式编辑器下载安装教程

MathType一款专业的数学公式编辑器,理科生专用的必备工具,可应用于教育教学、科研机构、工程学、论文写作、期刊排版、编辑理科试卷等领域。2018年2月,MathType 7简体中文版正式发布,给用户带来全新的体验。MathType 是Windows和M…

jenkins,gitlab,实时构建推送

首先jdk,jenkins安装好,新版jenkins不支持jdk8 然后安装环境maven,git 环境配置 插件安装 gitlab插件 Build Authorization Token Root插件 插件环境整好之后新建个任务 源码管理,填入仓库https地址,添加git…

shell函数

目录 一、shell函数 1.函数的作用 2.函数的优点 二、shell函数的格式 2.1函数返回值return 2.2函数变量 三、函数传参 四、递归函数 4.1查找输入目录下文件及其子目录下文件 4.2将IP地址转换为二进制 五、函数数据库 一、shell函数 1.函数的作用 把程序里需要多次…

C++Primer第20章 iostream库

第20章 iostream库 C中的IO流是通过多继承和虚拟继承实现的,下面是它的关系. 我们要学习的就是三个库,这里我会把重点的拿出来 iostream: 终端操作fstream:文件操作sstream:格式化操作 20.1 输出操作符<< 输出操作符可以接受任何内置数据类型的实参,包含我们的const …

怎么搭建个人小型渲染农场?搭建渲染农场配置

渲染农场是众多机器组成的渲染集群&#xff0c;通常用来渲染你的单帧效果图或动画项目&#xff0c;我们借助渲染农场的力量&#xff0c;可以满足3D项目交期时间迫在眉睫的需求&#xff0c;当你试着在自己的机器上渲染一个复杂的动画项目时&#xff0c;可能需要几十小时的等待时…

车载软件架构——闲聊几句AUTOSAR BSW(四)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 我们并不必要为了和谐,而时刻保持通情达理;我们需要具备的是,偶尔有肚量欣然承认在某些方面我们可能会有些不可理喻。该有主见的时候能掷地有声地镇得住场…

大数据赛项|2023年广东省大学生计算机设计大赛初赛结果公示

2023年广东省大学生计算机设计大赛 暨第16届中国大学生计算机设计大赛 粤港澳大湾区赛初赛结果公示 根据《广东省教育厅关于做好2023年广东省本科高校大学生学科竞赛工作的通知》&#xff0c;广东外语外贸大学承办2023年“广东省大学生计算机设计大赛”。 在广大师生的热情…

达摩院开源多模态对话大模型mPLUG-Owl

miniGPT-4的热度至今未减&#xff0c;距离LLaVA的推出也不到半个月&#xff0c;而新的看图聊天模型已经问世了。今天要介绍的模型是一款类似于miniGPT-4和LLaVA的多模态对话生成模型&#xff0c;它的名字叫mPLUG-Owl。 论文链接&#xff1a;https://arxiv.org/abs/2304.14178…

实时操作系统内存管理-TLSF算法

内存管理-TLSF算法 前言TLSF算法&#xff1a;为什么内存又叫内存“块”&#xff1a;O(1)查找空闲块&#xff1a;确定fl&#xff1a;确定sl&#xff1a;提级申请&#xff1a;分割块&#xff1a; 空闲块如何串成链表&#xff1f;减少外部碎片&#xff1a;查找上下块&#xff1a; …

OpenGL 4.0的Tessellation Shader(细分曲面着色器)

细分曲面着色器&#xff08;Tessellation Shader&#xff09;处于顶点着色器阶段的下一个阶段&#xff0c;我们可以看以下链接的OpenGL渲染流水线的图&#xff1a;Rendering Pipeline Overview。它是由ATI在2001年率先设计出来的。 目录 细分曲面着色器细分曲面Patch细分曲面控…

Node.js对ES6 及更高版本的支持

目录 1、简介 2、默认情况下什么特性随着 Node.js 一起发布&#xff1f; 3、有哪些特性在开发中&#xff1f; 4、移除这个标记&#xff08;--harmony&#xff09;吗 5、Node.js 对应 V8 引擎 1、简介 Node.js 是针对 V8 引擎构建的。通过与此引擎的最新版本保持同步&…

【HMS Core】Health Kit想要查看数据是来自用户的哪个设备,如何查看?

【问题描述1】 如何查看运动健康数据是来自用户的哪个设备&#xff1f; 【解决方案】 可以通过返回的数据中携带的dataCollectorId来查询提供数据的设备信息&#xff1a; 请求示例&#xff08;以查询睡眠记录详情为例&#xff09;&#xff1a; 1、查询睡眠记录并关联睡眠状…

用友携国资国企走进浙江龙游,共探区县国资智慧监管新样板

近日&#xff0c;由龙游县国有资产经营有限公司指导&#xff0c;用友网络科技股份有限公司&#xff08;以下简称&#xff1a;用友网络&#xff09;主办的“成为数智企业 迈向高质量发展——2023走进龙游数智化观摩研讨会”在浙江龙游成功举办&#xff01;全国近百位国资国企负责…