目录

1. Selenium

1.1 Selenium是啥

1.2 安装chrom Driver

1.3 selenium 使用

1.4 selenium元素定位

1.5 访问元素信息

1.6 交互

2. Phantomjs、Chrom handless


1. Selenium

1.1 Selenium是啥

自动化Web浏览器操作

主要用于Web应用程序的测试

支持多操作系统、多浏览器(dirver)

支持无界面浏览器操作(自动交互)

1.2 安装chrome Driver

chrome deriver下载

需要注意  driver 与 chrom版本对应

1.3 selenium 使用


# (1)导入selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service# (2) 创建浏览器操作对象
path = 'chromedriver.exe'
# 创建 Service 对象
service = Service(executable_path=path)
# 创建 WebDriver 对象
browser = webdriver.Chrome(service=service)# (3)访问网站
url = 'https://www.jd.com/'
browser.get(url)
# page_source获取网页源码
content = browser.page_source
print(content)

1.4 selenium元素定位

selenium3和selenium4的语法有一定不同

button = browser.find_element(By.ID, 'chat-submit-button')
button2 = browser.find_elements(By.ID, 'chat-submit-button')

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

button = browser.find_element(By.ID, 'chat-submit-button')button2 = browser.find_element(By.NAME, 'wd')button3 = browser.find_elements(By.TAG_NAME, 'input')button4 = driver.find_element(By.CLASS_NAME, "btn-primary")button5 = browser.find_element(By.LINK_TEXT, '直播')button6 = browser.find_element(By.PARTIAL_LINK_TEXT, '直')button7 = browser.find_elements(By.XPATH, '//button[@id="chat-submit-button"]')button8 = browser.find_element(By.CSS_SELECTOR, '#chat-submit-button')print(button)

1.5 访问元素信息

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

input = browser.find_element(By.ID, 'chat-textarea')
# 获取标签的属性
print(input.get_attribute('class'))
# 获取标签的名字
print(input.tag_name)
# 获取元素文本
a = browser.find_element(By.LINK_TEXT,'新闻')
print(a.text)

1.6 交互

点击:click()
输入:send_keys()
后退操作:browser.back()
前进操作:browser.forword()
模拟JS滚动:
    js='document.documentElement.scrollTop=100000'
    browser.execute_script(js) 执行js代码
获取网页代码:page_source
退出:browser.quit()

2. Phantomjs、Chrome handless

无界面浏览器。不进行css渲染,运行效率高。

Phantomjs基本被淘汰,建议使用Chrom handless

from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedef share_browser():# 替换为你的 chromedriver 路径path = 'chromedriver.exe'  # Windows 示例,如 chromedriver.exeservice = Service(executable_path=path)options = webdriver.ChromeOptions()options.add_argument('--headless')  # 无头模式options.add_argument('--disable-gpu')options.add_argument('--no-sandbox')# 创建浏览器实例browser = webdriver.Chrome(service=service, options=options)return browserbrowser = share_browser()url = 'https://www.baidu.com'browser.get(url)
browser.save_screenshot('baidu22.png')

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《事务隔离级别与 MVCC 机制深度剖析》

🔍 事务隔离级别与 MVCC 机制深度剖析 🧠 前言 在高并发场景下,数据库事务是保证数据一致性的基石。但在 MySQL InnoDB 中,事务的隔离级别、锁策略、MVCC(多版本并发控制)之间的配合,常常是面…

20250814,通义万相,无限生成权限(慢速)

今天看小红书,发现通义万相可以免费生成慢速图片。研究一下每天10分用完后,按钮就变成0,但是可以点击这个0,进入排队慢速生成状态。原来通义万相的收费主要是用来提速的(快速出图),不着急的话也…

Salesforce方案:医疗行业“患者随访与健康管理”

医疗行业“患者随访与健康管理”的Salesforce方案设计 一、业务需求核心解析 医疗行业患者随访与健康管理需实现三大目标: 全周期健康记录:整合患者基本信息、病史、诊疗记录及检查结果,形成完整健康档案个性化随访计划:基于病种和…

vscode使用keil5出现变量跳转不了

vscode使用keil5出现变量跳转不了,或者未包含文件,或者未全局检索; 参考如下文章后还会出现; 为什么vscode搜索栏只搜索已经打开的文件_vscode全局搜索只能搜当前文件-CSDN博客 在机缘巧合之下发现如下解决方式: 下载…

如何查看SQL Server的当前端口

想知道SQL Server用的是哪个端口? 很简单,通过注册表就能查到。第一步:打开注册表按下 Win R,输入:regedit回车,打开注册表编辑器。第二步:找到路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSS…

常见的Jmeter压测问题

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快根据在之前的压测过程碰到的问题,今天稍微总结总结,以后方便自己查找。一、单台Mac进行压测时候,压测客户端Jmeter启动超过2000个…

第二十三天:求逆序对

每日一道C题&#xff1a; 问题&#xff1a;给定一个序列a1,a2,…,an&#xff0c;如果存在i<j并且ai>aj&#xff0c;那么我们称之为逆序对&#xff0c;求逆序对的数目。 要求&#xff1a;输入第一行为n,表示序列长度&#xff0c;接下来的n行&#xff0c;第i1行表示序列中的…

Java—CompletableFuture 详解

参考&#xff1a; CompletableFuture原理与实践-外卖商家端API的异步化 - 美团技术团队 CompletableFuture 详解 | JavaGuide 1.CompletableFuture介绍 CompletableFuture是由Java 8引入的&#xff0c;在Java8之前我们一般通过Future实现异步。 Future用于表示异步计算的结…

大模型部署基础设施搭建 - 向量数据库milvus

一、docker方式安装参考官网&#xff1a;https://milvus.io/docs/zh/install_standalone-docker.md#Install-Milvus-in-Docker1.1 安装 curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.shbash standal…

(25.08)Ubuntu20.04复现KISS-ICP

主页&#xff1a;https://github.com/PRBonn/kiss-icp?tabreadme-ov-file 仓库&#xff1a;https://github.com/PRBonn/kiss-icp.git 非 ROS 使用流程 1. 克隆仓库 git clone https://github.com/PRBonn/kiss-icp.git cd kiss-icp 2. 使用 micromamba 创建 Python 虚拟环…

linux 软硬链接详解

一、核心区别总览特性硬链接&#xff08;Hard Link&#xff09;软链接&#xff08;Symbolic Link&#xff09;本质直接指向文件的 inode&#xff08;数据块的入口地址&#xff09;指向文件的 路径名&#xff08;相当于快捷方式&#xff09;跨文件系统支持❌ 仅限同一文件系统✅…

基于SpringBoot+Vue的房屋匹配系统(WebSocket实时通讯、协同过滤算法、地图API、Echarts图形化分析)

&#x1f388;系统亮点&#xff1a;WebSocket实时通讯、协同过滤算法、地图API、Echarts图形化分析&#xff1b;一.系统开发工具与环境搭建1.系统设计开发工具后端使用Java编程语言的Spring boot框架 项目架构&#xff1a;B/S架构 运行环境&#xff1a;win10/win11、jdk17前端&…

第2节:多模态的核心问题(多模态大模型基础教程)

前言 本节课我们聚焦多模态大模型最核心的问题&#xff1a;文本、图像、语音这些“不同语言”的信息&#xff0c;是怎么被模型“翻译”并互相理解的&#xff1f;我们从“差异”入手&#xff0c;一步步搞懂其中的逻辑。 一、先搞懂&#xff1a;什么是“模态差异”&#xff1f; 生…

Java stream distinct findAny anyMatch实现 :DistinctOp、FindOp、MatchOp

DistinctOpsDistinctOps 是一个专门用于实现 Stream.distinct() 操作的工厂类。正如它的名字所示&#xff0c;它的核心职责就是创建能够去除流中重复元素的操作。distinct() 是一个有状态的中间操作 (stateful intermediate operation)&#xff0c;这意味着它通常需要看到所有元…

锁的基本介绍

锁 并发编程的一个最基本问题就是原子性地执行一系列指令。锁有助于直接解决这一问题。 锁的基本思想 锁就是一个变量。这个变量保存了锁在某一时刻的状态。它要么是可用的&#xff0c;表示没有线程持有锁&#xff0c;要么是被占用的&#xff0c;表示有线程持有锁&#xff0c;正…

【读代码】开源流式语音编码器SecoustiCodec

引言:从LLM到深度语义 在大型语言模型(LLM)驱动的语音交互时代,神经语音编解码器 (Neural Speech Codec) 扮演着至关重要的角色。它如同 LLM 的“耳朵”和“嘴巴”,负责将连续的语音波形转换为离散的、可供模型处理的 token,并将模型生成的 token 还原为自然的人声。 一…

P5967 [POI 2016] Korale 题解

P5967 [POI 2016] Korale 题目描述 有 nnn 个带标号的珠子&#xff0c;第 iii 个珠子的价值为 aia_iai​。 现在你可以选择若干个珠子组成项链&#xff08;也可以一个都不选&#xff09;&#xff0c;项链的价值为所有珠子的价值和。 给出所有可能的项链排序&#xff0c;先按…

SwiftUI 页面弹窗操作

SwiftUI 页面弹窗操作指南一、基础弹窗实现1. Alert 基础警告框2. ActionSheet 操作菜单3. Sheet 模态视图4. Popover 浮动视图二、高级自定义弹窗1. 自定义弹窗组件2. 使用自定义弹窗三、弹窗状态管理1. 使用环境对象管理弹窗2. 弹窗路由系统四、动画与过渡效果1. 自定义弹窗动…

OpenCV图像处理2:边界填充与平滑滤波实战

前面学了一些关于opencv图像处理的内容&#xff0c;现在继续。一 图像填充边界填充&#xff08;Border Padding&#xff09;​&#xff0c;即在图像四周添加指定宽度的像素区域。其核心函数是cv2.copyMakeBorder()&#xff0c;通过不同的填充方式&#xff08;borderType&#x…

imx6ull-驱动开发篇22——Linux 时间管理和内核定时器

目录 内核时间管理 系统节拍率 高/低节拍率的优缺点 jiffies 节拍数 时间绕回 时间转换函数 内核定时器 timer_list 结构体 定时器API函数 init_timer 函数 add_timer 函数 del_timer 函数 del_timer_sync 函数 mod_timer 函数 Linux 内核短延时函数 内核时间管…