selenium中的Select模块以及firefox下载设置

【爬虫】python+selenium+firefox使用与部署详解 我的梦想,值得我本人去争取,我今天的生活,绝不是我昨天生活的冷淡抄袭。—— 司汤达《红与黑》 一. 概述 对爬虫感兴趣学习过 requests、scrapy 等 python 库用来爬取一些网站数据,最近刚好由于需要,又开始做一些爬虫相关的工作,写本文的目的是将自己学习过程和遇到的问题记录下来,一方面巩固学习的知识,另一方面希望对遇到同样问题的朋友提供一些帮助。 本文主要从以下几个方面介绍(这也是自己学习的过程): 为什么要使用 selenium 传统方式配置使用 selenium 二. 为. 阅读详情

一直以来在python脚本处理网页下拉框时,都是使用find_element,然后选择option,模拟鼠标click()操作的方式来进行处理的,最近发现selenium本身提供Select模块,可以有效进行处理。没找到哪儿有具体说明,查看了python帮助文档,学习了下具体使用方式。

简单示例

from selenium.webdriver.support.ui import Select
Select(driver.find_element_by_tag_name("select")).select_by_index(2)

Select类的__init__函数需要带有一个webelement的输入参数,亦即find_element_by_...方式的返回值。

Select中的方法及属性说明

清除元素选择的方法

deselect_all() 清除所有选择项;

deselect_by_index(index) 清除相应index的选择;

deselect_by_value(value) 注意value是web元素中的value属性对应的值,说明中举例<option value = "foo">Bar</option>,使用deselect_by_value时,输入参数为"foo";

deselect_by_visible_text(text)亦处理上例中的<option value = "foo">Bar</option>时,使用方式为deselect_by_visible_text("Bar");

选择元素对应方法

select_by_index(index),根据index进行选择;

select_by_value(value) 根据元素的value属性进行选择;

select_by_visible_text(text) 根据显示文本进行选择;

一些数据属性

all_selected_options 返回所有选择过的元素列表;

first_selected_option 第一个被选择的元素;

options 可选择列表;

firefox下载设置

为什么选择firefox?在使用过程中,发现safari无法设置浏览器属性,本想将不同的内容存储在不同的文件夹,而Safari无法设置。可以通过类中构造函数信息确认,Safari中不带有profile的设置。

from selenium import webdriver

help(webdriver.Safari)查看__init__函数信息:
__init__(self, port=0, executable_path='/usr/bin/safaridriver', reuse_service=False, desired_capabilities={'browserName': 'safari', 'version': '', 'platform': 'MAC'}, quiet=False, keep_alive=True, service_args=None)

help(webdriver.Firefox)查看__init__函数信息:
__init__(self, firefox_profile=None, firefox_binary=None, timeout=30, capabilities=None, proxy=None, executable_path='geckodriver', options=None, service_log_path='geckodriver.log', firefox_options=None, service_args=None, desired_capabilities=None, log_path=None, keep_alive=True)

Firefox使用时弹出错误

selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

解决方式,安装geckodriver,利用homebrew安装geckodriver的方式:brew install geckodriver

Firefox的下载设置

profile = FirefoxProfile()

#setPreference(“browser.helperApps.neverAsk.openFile”,value);
#设置哪些文件直接打开

profile.set_preference("browser.helperApps.neverAsk.saveToDisk" , "application/x-msdownload,application/zip,text/plain")
#用来设置哪些文件自动下载,具体文件类型可参考http://www.w3school.com.cn/media/media_mimeref.asp

profile.set_preference("browser.helperApps.alwaysAsk.force", False)
profile.set_preference('general.warnOnAboutConfig', False)

profile.set_preference("browser.download.folderList",2)
#2为下载到设置的文件夹中,0下载到用户桌面1为下载Downlaod文件夹;

profile.set_preference("browser.download.manager.showWhenStarting", False)
#缺省值为true,是否弹出下载设置管理窗口;

profile.set_preference("browser.download.dir",saveDataPath)
#设置下载文件夹位置

profile.update_preferences()
self.webDriver = webdriver.Firefox(firefox_profile=profile)

python与matlab中datenum数值差异

总是觉得matlab操作图形比较方便,再处理信息画图时,出现日期不匹配的问题,原因在于同样的datenum在python和matlab中处理稍有差别。

help(dates.date2num)得到的帮助文档信息

Number of days (fraction part represents hours, minutes, seconds, ms) since 0001-01-01 00:00:00 UTC, plus one.

也就是时间转换为数值的计算是从0001-01-01作为1开始计算的

import matplotlib.dates as dates
import datetime
a=datetime.datetime(1, 1, 1, 0, 0)
dates.date2num(a)
得到的结果为1.0

matlab中

doc datenum得到的帮助文档信息

The datenum function creates a numeric array that represents each point in time as the number of days from January 0, 0000.

>> datenum('01-01-0001')
ans =
367
datenum('01-01-0001')得到的结果为367,在matlab和python中日期转换为浮点的值相差为366。

octave中的datenum和matlab中的结果一致

>>datenum('0001-01-01')
ans = 367

所以从结果上看,python的datenum与matlab中的datenum存在366的恒定差值。

小知识

python语句换行: 在python语句太长时,需要换行处理,可以行尾用\作为连接符;

字典根据值排序: 可以使用lambda函数,lambda为匿名函数,形如a = sorted(x.items(), key=lambda x: x[1], reverse=True/False)方式,x为字典,a为元组列表。

解压中文文件问题:在调用MAC unzip命令解压带中文的文件,弹出错误,error: cannot create -?-+???+??????.xls Illegal byte sequence,查到的信息unzip可以带有-o选项指定编码格式GBK进行解压,但MAC上的unzip版本没有此选项。后来使用unar进行指定编码格式unar -e GBK file.zip进行解压,可以使用homebrew命令直接安装brew install unar。

如何将错误输出到文件:打印到屏幕上的信息有两种:stdout stderr 如果使用command > filename或者command 1> filename的形式,只将stdout的内容写到filename文件中;如果用command 2> filename的形式,只有将2-stderr的内容重新定向到filename中;如果要将stdout和stderr的信息全部重定向到文件中,可以用:command > filename 2>&1。关于2>&1的理解0,1,2为文件描述符,0表示stdin,1表示stdout,2表示stderr,2>的意思是将stderr的信息输出到某文件,&1表示指向stdout的文件位置。

参考地址

https://www.sitepoint.com/mime-types-complete-list/

http://www.w3school.com.cn/media/media_mimeref.asp

https://www.toolsqa.com/selenium-webdriver/how-to-download-files-using-selenium/

Selenium使用浏览器用户配置进行测试 Firefox会将用户的个人信息,如书签、密码和用户偏好设置存储在一个称为配置文件的文件集合中,这些文件存储的位置与Firefox程序文件是分开的。你可以拥有多个Firefox配置文件,每个配置文件都包含一套不同的用户信息。配置文件管理器允许你创建、删除、重命名和切换配置文件。 阅读详情

相关推荐

Firefox开发环境部署指南:ESR配置、user.js固化与Selenium集成

Firefox作为可编程Web运行时,其核心价值在于高度可控的配置体系与企业级策略支持。基于W3C WebDriver标准的geckodriver、启动即生效的user.js机制、以及签名验证的policies.json策略框架,共同构成开发者与安全工程师构建稳定自动化链路的技术基础。它在Selenium自动化、Burp Suite联动调试、内网HTTPS服务验证等场景中不可替代,尤其适合需长期维护API兼容性与证书信任链的工程环境。本文聚焦Firefox ESR版本的纯净安装、profile隔离、代理与加

weixin_33851177的博客 388

selenium和Firefox的安装配置

selenium和Firefox的安装配置

研究方向:嵌入式、AI 1万+

python web自动化selenium【元素定位与操作】及弹窗(alert/confirm/prompt)操作及上传附件7

selenium【元素定位与操作】及弹窗(alert/confirm/prompt)操作及上传附件

weixin_43724711的博客 1420

selenium驱动Firefox安装和环境配置

selenium驱动Firefox安装和环境配置

qq_43659681的博客 2万+

Python Selenium动态网页爬虫实战:从环境搭建到反爬策略

网络爬虫是自动化获取网页数据的关键技术,其核心原理在于模拟浏览器请求并解析响应内容。对于静态网页,传统的HTTP请求库即可胜任;然而,当面对由JavaScript动态渲染生成内容的现代网站时,常规方法往往失效,这就需要引入浏览器自动化技术。Selenium作为主流的浏览器自动化工具,其技术价值在于能够驱动真实浏览器(如Firefox)执行点击、滚动、输入等交互操作,完整地加载并渲染页面,从而获取最终呈现的动态数据。这一技术尤其适用于处理基于Ajax、Vue、React等框架构建的电商商品列表、社交媒体信息流

weixin_34218890的博客 546

Selenium无头模式实战:Python动态网页数据抓取与反爬策略

在数据采集和自动化测试领域,动态网页内容的抓取是一个常见且关键的技术挑战。其核心原理在于,许多现代网站使用JavaScript在客户端动态渲染内容,传统的基于HTTP请求的爬虫只能获取初始HTML骨架,无法获得完整的页面数据。为了解决这一问题,浏览器自动化工具应运而生,它们通过模拟真实用户操作浏览器(如点击、滚动、输入),触发JavaScript执行,从而获取渲染后的完整DOM。Selenium作为其中成熟且广泛支持多语言的工具,结合无头浏览器模式,在资源消耗和稳定性上取得了良好平衡,为价格监控、市场调研等

weixin_33670786的博客 415

selenium安装谷歌、火狐、Edge

selenium的本质也可以认为是js.通过js去特定的执行一些点击,移动的命令。 selenium调用谷歌,Firefox,edge

qq_34786604的博客 4930

Selenium WebDriver核心操作指南:从原理到Edge浏览器自动化实战

浏览器自动化是软件测试、数据采集和流程自动化领域的关键技术,其核心在于通过程序指令模拟真实用户操作。Selenium WebDriver作为W3C标准协议,通过驱动浏览器驱动程序,将代码指令转换为浏览器内核可执行的原生调用,实现了跨浏览器、跨语言的标准化控制。这项技术极大地提升了Web应用测试的覆盖率和效率,同时为RPA和网页数据抓取提供了可靠的技术基础。在实际应用中,针对特定浏览器如Microsoft Edge的自动化配置,尤其是驱动版本匹配与下载,是工程实践中的常见需求。本文围绕WebDriver协议与

weixin_34214500的博客 438

Go语言驱动Firefox自动化:Selenium WebDriver与GeckoDriver深度整合实战

Web自动化测试与数据采集是现代软件开发与数据分析中的关键技术,其核心原理是通过程序模拟用户操作浏览器,实现对网页的交互与内容获取。Selenium WebDriver作为行业标准协议,为跨语言控制浏览器提供了统一接口,而GeckoDriver则是Firefox浏览器的专用驱动实现。在追求高性能、低资源消耗和易于部署的自动化服务或爬虫场景下,Go语言凭借其卓越的并发模型(goroutine)和编译为单一可执行文件的特性,展现出独特的技术价值。通过将Go与Selenium、GeckoDriver深度整合,开发

weixin_34174322的博客 359

openEuler服务器离线安装实战:从Docker到Samba的完整避坑指南

本文提供了一份详尽的openEuler服务器离线部署实战指南,重点解决了在无网络环境下安装Docker、Samba等软件的依赖难题。文章深入对比了`dnf install`、`rpm`直接安装及禁用仓库安装三种核心方法,并分享了构建本地DNF仓库的进阶策略,旨在帮助运维人员构建高效可靠的离线部署工作流。

weixin_29210759的博客 72

非易失存储器读写

24C256、IIC_SCL、IIC_SDA

CT_1104的专栏 2985

Python库积累之Selenium(二)-Seleniun中的一些问题与解决方法

常见问题与解决: 1.selenium中出现提示’Your connection is not private’(你的连接不是私密连接) 在Chrome中需要添加忽略认证错误: from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument('ignore-certificate-errors') driver = webdriver.Chrome(chrome_options=options

Smilecoc的博客 1104

Spark Graphx 项目实战(航班飞行网图分析)

航班飞行网图分析一.需要的技能点二.任务描述三.数据探索1.下载数据2.数据格式四.航班飞行网图问题分析1.构建航班飞行网图2.统计航班飞行网图中机场与航线的数量3.计算最长的飞行航线4.找出最繁忙的机场5.找出最重要的飞行航线6.找出最便宜的飞行航线五.代码实现 一.需要的技能点 Spark GraphX API Spark GraphX PageRank Spark GraphX Pregel 二.任务描述 需求概述: 探索航班飞行网图数据 构建航班飞行网图 使用Spark GraphX完成下列任

May_J_Oldhu的博客 1538

selenium+python基本知识

&lt;link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-5edb848729.css"&gt; &lt;div class="htmledit_views" id="content_views"&gt; 1.

小小核桃 7719

学习笔记--在线强化学习、离线强化学习、连续强化学习的区别(4)

在连续强化学习中,状态和动作都是连续的,这意味着智能体可以采取无限数量的动作,并且状态空间是连续的,而不是离散的点。- 策略评估和模型选择:在离线学习中,如何有效地评估不同策略和模型的性能,是一个重要的研究问题。- 连续学习和迁移学习:在线学习中,学习者需要不断在不同任务和环境中学习,研究者致力于研究如何将之前学到的知识迁移到新任务中,以实现更高效的学习和决策。- 连续动作选择和优化:在连续动作空间中,智能体对动作的选择是无限的,研究者在连续强化学习中通常关注如何有效地选择连续动作,以达到最优决策策略。

hzlalb的博客 3601

Ego-Planner实战避坑指南:从环境搭建到仿真运行

本文详细介绍了在Windows系统下,通过WSL2搭建Ego-Planner无人机路径规划算法开发环境的完整流程与实战避坑指南。内容涵盖ROS Noetic安装、第三方依赖库(如Ceres Solver)编译冲突解决、Realsense SDK版本降级处理,以及Gazebo仿真与真机调试的常见问题,旨在帮助开发者高效完成环境配置并成功运行仿真。

weixin_29232507的博客 699

Selenium07--webdriver的高级操作(一)无头浏览器与select操作方法

无头浏览器 定义:没有界面的浏览器 特点: 1、没有界面也能操作 2、没有界面也能截图 3、省资源 4、不关心界面操作过程 headless(官方推荐) 1、ChromeOptions fromtimeimportsleep fromseleniumimportwebdriver option=webdriver.ChromeOptions()#实例化一个浏览器对象 option.add_argument('--headless')#添加参数,option...

一个小白自学python,在这写写笔记。 1531

深入解析.Net中SM2与sm-crypto的跨平台加解密实践

本文深入探讨了在.Net平台与前端sm-crypto库之间实现SM2国密算法跨平台加解密的实践方案。针对对接中常见的密钥格式、密文拼接顺序(C1C3C2与C1C2C3)等核心难点,提供了基于BouncyCastle的完整工具类实现、前后端联调示例及问题排查指南,旨在帮助开发者构建安全、兼容的数据加密通道。

weixin_29322855的博客 369

Selenium一本通

wd.quit()

媛媛 3000

【教程】BM1684X-32边缘计算盒子 网络配置教程

BM1684X边缘计算盒子网络配置教程

ShiMetaPi的博客 714

STM32标准库下载保姆级教程:2024最新官网免注册直接下载方法

本文提供2024年最新STM32标准库免注册下载方法,包括直接下载链接、GitHub镜像仓库和开发工具内置库三种途径。详细介绍了标准外设库的优势、配置步骤及常见问题解决方案,帮助开发者快速获取并应用这一重要开发资源。

weixin_29163581的博客 367

Selenium Manager架构深度解析:自动化浏览器驱动管理的核心机制与优化实践

Selenium Manager作为Selenium生态系统中的核心基础设施组件,彻底解决了Web自动化测试中浏览器驱动管理的复杂性问题。通过智能的版本检测算法、高效的缓存机制和跨平台兼容性设计,该工具实现了浏览器驱动的自动化发现、下载、配置和生命周期管理,将开发人员从繁琐的环境配置工作中解放出来,显著提升了自动化测试的稳定性和可维护性。 ## 技术背景与问题定义 ### 传统Web自动化测试

gitblog_01128的博客 500

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Python Selenium导入失败:环境配置与模块导入机制深度解析

在Python开发中,模块导入机制是理解包管理和环境隔离的基础。其核心原理在于Python解释器会按照sys.path定义的搜索路径查找模块,而pip install操作实质是为特定解释器的site-packages目录安装依赖。这一机制的技术价值在于实现了项目间的环境隔离与依赖管理,避免了版本冲突。在自动化测试、数据爬取等工程实践中,环境配置问题常导致“安装成功却无法导入”的典型困境。本文聚焦Selenium模块导入失败这一高频问题,深入剖析Python环境的多重宇宙(如系统Python、虚拟环境)、ID

weixin_33851429的博客 346

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python如何写Selenium全攻略

本文详细介绍了Selenium自动化测试工具的使用方法,主要内容包括: 环境配置 浏览器驱动下载与安装 镜像源设置加速下载 驱动路径配置方法 基本操作 浏览器启动与网页访问 日志过滤设置 元素定位方法(ID/Class/XPath等) 元素操作(点击/输入/获取属性等) 高级功能 等待机制(强制/隐式/显式) 页面切换(iframe/多窗口) 表单处理(复选框/下拉框) 鼠标模拟(悬停/拖拽) 对话框处理(alert/confirm/prompt) 实用技巧 页面冻结调试 移动端模拟 文件上传 截图功能 文

Lizhihao_的博客 1593

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Selenium IDE使用指南五(常见问题)

如何记录悬停? 鼠标悬停(aka悬停)操作很难作为记录周期的一部分自动捕获。 要在您的测试中添加鼠标悬停,需要进行一些手动干预。您可以通过两种不同的方式来做到这一点。 选项1:在录制时添加 录制时,右键单击要悬停的元素 在出现的菜单中,单击Selenium IDE,然后Mouse Over 确认Mouse Over测试步骤在测试中的正确位置(如果需要,将其拖放到其他位置) 选项2:在测试编辑器中手动添加 右键单击IDE中的测试步骤 选择 Insert new command 输入mouse over到

novelly的专栏 1874

Selenium Web自动化实战:从环境搭建到框架设计与反爬应对

Web自动化测试是软件工程中提升测试效率、保障软件质量的关键技术。其核心原理是通过程序模拟用户操作浏览器,自动执行点击、输入、验证等重复性任务,从而将人力从繁琐的回归测试中解放出来,实现快速反馈和持续交付。在众多自动化工具中,Selenium因其跨浏览器、支持多语言和开源生态而成为行业标准。它通过WebDriver协议与浏览器通信,结合显式等待、Page Object Model等工程实践,能够构建稳定、可维护的自动化脚本。这些脚本广泛应用于UI回归测试、数据抓取(RPA)和兼容性测试等场景。本文以Sele

weixin_34320159的博客 423
上一篇: python中的运算符重载与模块
下一篇: jupyter notebook 环境搭建
究理观心
博客等级 码龄10年 184粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值