当前位置: 首页 > news >正文

DrissionPage 一个替代selenium的pip --- 一个可以接管正在运行的chrome包

DrissionPage 一个替代selenium的pip包,持续更新

1、加载内容,并接管chrome浏览器

from DrissionPage import ChromiumPage, ChromiumOptions
page = ChromiumPage(addr_or_opts='127.0.0.1:9222')
print(page.title)ul = page.eles('@id=form-submit')
for i in ul:print(i.text)
废话

DrissionPage 是一个基于 Selenium 的自动化测试框架,它简化了 Selenium 的使用过程,并且支持多种浏览器。下面是一段关于 DrissionPage 的学习笔记示例:


DrissionPage 学习笔记

1. 引言
  • 目的:了解和掌握 DrissionPage 的基本用法及优势。
  • 背景:Selenium 虽然功能强大,但代码复杂度较高,DrissionPage 则通过封装常用操作,提高了自动化脚本的开发效率。
2. 安装与配置
  • 安装
    pip install drissionpage
    
  • 环境准备
    • 安装对应浏览器及其驱动程序(如 ChromeDriver)。
    • 设置环境变量,确保浏览器驱动可被访问。
3. 基本用法
  • 初始化浏览器

    from drissionpage import DrissionPage# 初始化浏览器实例
    page = DrissionPage(browser='chrome')
    
  • 打开网页

    page.get('https://www.example.com')
    
  • 元素定位

    • CSS 选择器
      element = page.locator_css('#element-id').wait()
      
    • XPath
      element = page.locator_xpath('//div[@id="element-id"]').wait()
      
  • 元素交互

    • 点击
      element.click()
      
    • 输入文本
      element.type('Hello, World!')
      
  • 关闭浏览器

    page.quit()
    
4. 高级特性
  • 页面等待

    page.wait_page_load()
    
  • 断言

    assert page.locator_css('#element-id').exists()
    
  • 截图

    page.screenshot('example.png')
    
5. 示例代码
from drissionpage import DrissionPagedef test_example():page = DrissionPage(browser='chrome')try:page.get('https://www.example.com')page.wait_page_load()search_box = page.locator_css('#search-box').wait()search_box.type('test query')search_box.submit()results = page.locator_css('.search-result').wait_all()assert len(results) > 0finally:page.quit()if __name__ == '__main__':test_example()
6. 总结
  • DrissionPage 通过提供简洁的 API 和封装机制,大大降低了使用 Selenium 进行 Web 自动化测试的难度。
  • 适合快速原型开发和日常测试任务。

相关文章:

DrissionPage 一个替代selenium的pip --- 一个可以接管正在运行的chrome包

DrissionPage 一个替代selenium的pip包,持续更新 1、加载内容,并接管chrome浏览器 from DrissionPage import ChromiumPage, ChromiumOptions page ChromiumPage(addr_or_opts127.0.0.1:9222) print(page.title)ul page.eles(idform-submit) for i i…...

爬虫入门--了解相关工具

目录 1.爬虫与python 2.第一个爬虫 3.web请求的全过程 3.1服务器渲染 3.2前端JS渲染 4.浏览器工具 4.1Elements 4.2Console 4.3Source 4.4network(重点) 5.小结 1.爬虫与python 首先我们要知道,爬虫一定要用Python么? 非也~…...

django项目中通用的分页组件

文章目录 分页组件pager组件代码 分页组件 应用分页组件,需要以下两个步骤: 视图函数中:(先获取queryset,将request和queryset传入分页组件对象中,得到生成的html标签) def customer_list(requ…...

想实现ubuntu搭建sqli-labs靶场

目录 首先前期的nginx和php部署完成​编辑​编辑 Xftp导入sqli-labs 遇到了的问题 它提示我们请检查db-creds.inc 去尝试解决这个问题 尝试修改MySQL root密码 修改db-creds.inc配置 再次尝试依旧失败 思考:会不会是MySQL版本过高的原因 重新下载MySQL5.7.…...

tp8 按日期分组查出数据

1.如果数据库里时间字段都是时间戳,使用mysql中的from_unixtime()函数 field("from_unixtime(create_time,%Y-%m-%d) as time,group_concat(id)")->group(time)->select()2. 如果数据库是普通的日期格式(如2024-01-02 01:23:50)&#x…...

单例模式(懒汉模式,饿汉模式)

单例的饿汉模式:在主函数未调用之前该单例就已经存在了,所以不存在线程安全的问题。 class Singleton { private: Singleton(){} public:static Singleton s1;static Singleton* GetInstance(){return &s1;}Singleton(const Singleton&) delet…...

【Qt】Item Widgets 多元素控件

Qt中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView 上述控件分为Widget和View,其区别如下: 以QTableWidget和QTableView为例 QTableView是基于MVC(Model-View-Controller)设计的控件。QTableView自身…...

sharded_inference_engine:MLXDynamicShardInferenceEngine;step

目录 sharded_inference_engine:MLXDynamicShardInferenceEngine 类属性 方法 __init__(self) async def infer_prompt(self, shard: Shard, prompt: str, inference_state: Optional[str] = None) -> (np.ndarray, str, bool) async def infer_tensor(self, shard: …...

JAVA开发学习-day21

JAVA开发学习-day21 1. 删除表单数据 根据ElementUI的官方组件指南&#xff0c;为表单每列的数据添加删除按钮 <el-table :data"tableData" style"width: 100%"><el-table-column prop"id" label"ID" width"180"…...

Python的安装环境以及应用

1.环境python2&#xff0c;Python 最新安装3.12可以使用源码安装 查看安装包 [rootpython001 ~]# yum list installed | grep epel 3[rootpython001 ~]# yum list installed | grep python [rootpython001 ~]# yum -y install python3 安装python3 查看版本 [root…...

TabLayout使用以及自定义tab标签

<?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tool…...

第二十节、有限状态机和抽象类多态

一、抽象类 挂载到动画器上的就是继承抽象类代码 1、使用onenable周期函数启用 2、在每一个周期函数中对抽象类进行调用 3、隐藏公开的变量...

SQL注入实例(sqli-labs/less-23)

0、初始网页 1、闭合方式判断 闭合符号为单引号&#xff0c;通过测试发现过滤了注释&#xff0c;所以直接闭合 2、确定查询表的列数 确定查询表的列数为3列 ?id1 order by 3 3、确定回显位置 回显位置为第二列和第三列 ?id-1 union select 1,2,3 4、查看当前登录和数据…...

3.Redis数据类型(二)

LIST List 是一个简单的双向链表&#xff0c;支持从两端进行插入和删除操作。 常用命令&#xff1a; lpush/rpush/lrange lpush 插入一个或多个元素到列表的左端。 rpush 插入一个或多个元素到列表的右端。 lrange key start stop 获取元素&#xff08;前闭后闭&#xff0…...

JavaWeb系列十一: Web 开发会话技术Session

Web 开发会话技术Session Session有什么用session基本原理session原理示意图session可以做什么如何理解Session Session常用方法Session底层实现机制原理分析图应用实例session实现原理动画 Session生命周期Session生命周期说明Session生命周期实例 作业布置 Session有什么用 …...

k8s中yaml文件的编写

目录 1.编写pod.yaml 2.编写deploment.yaml 3.编写service.yaml关联创建的pod 4.总结获取K8S资源配置清单文件模板方法 5.补充 1.编写pod.yaml vim demo1-pod.yaml apiVersion: v1 kind: Pod metadata:name: scj-podnamespace: xy101labels:app: nginxmylove: tangjunmyc…...

打卡第37天------动态规划

加油!不要放弃,那些冲进清北复交的高材生的水平真不是盖的,名不虚传,有实力的全能选手。我在刷题的过程中不得不表达一下对他们的钦佩。 这里在遍历顺序上可就有说法了。 如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for…...

openfeign本地试用

目的&#xff1a;在本地搭建一个简单的openfeign使用场景&#xff0c;测试查询、新增等功能 平台&#xff1a;win10 技术栈&#xff1a;Springboot, SpringCloud, Nacos, Mybatis, MySql, Logback 框架作用说明&#xff1a; Nacos用于服务注册&#xff0c;将provider应用注…...

数据库|SQLServer数据库:查询函数(SUM、COUNT、MAX、MIN、AVG)的使用

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 日拱一卒&#xff0c;进一寸有进一寸的欢喜&#xff0c;本节学习数据库查询函数的使用。 以下为学习笔记。 01 求和 SUM&#xff1a;对某一字段列进行求和运算&#xff1b; 示例&#xff1a; 对账号表Account的文章…...

简单Qt贪吃蛇项目

目录 先看效果 项目介绍 界面一&#xff1a;游戏大厅界面 界面二&#xff1a;关卡选择界面​编辑 界面三&#xff1a;游戏界面 游戏大厅页面 游戏关卡选择页面 游戏房间页面 封装贪吃蛇数据结构 初始化游戏房间界面 设置窗口大小、标题、图标等 蛇的移动 初始化贪…...

Soundflower:解锁macOS音频路由的神奇工具

Soundflower&#xff1a;解锁macOS音频路由的神奇工具 【免费下载链接】Soundflower MacOS system extension that allows applications to pass audio to other applications. Soundflower works on macOS Catalina. 项目地址: https://gitcode.com/gh_mirrors/so/Soundflow…...

如何快速掌握PowerToys中文版:Windows效率提升的终极指南

如何快速掌握PowerToys中文版&#xff1a;Windows效率提升的终极指南 【免费下载链接】PowerToys-CN PowerToys Simplified Chinese Translation 微软增强工具箱 自制汉化 项目地址: https://gitcode.com/gh_mirrors/po/PowerToys-CN 如果你经常在Windows上工作&#xf…...

告别网络依赖:用Vue3+Leaflet和IIS搭建本地离线地图服务(附腾讯地图瓦片下载)

构建企业级离线地图解决方案&#xff1a;Vue3Leaflet与IIS深度整合指南 在数字化转型浪潮中&#xff0c;地图功能已成为各类管理系统的基础需求。然而&#xff0c;许多政企单位、军工机构及偏远地区项目往往面临网络不稳定或完全离线的特殊环境。本文将系统介绍如何基于Vue3、L…...

E-Ink Launcher架构设计如何解决电子墨水屏性能瓶颈:深度解析Android启动器优化策略

E-Ink Launcher架构设计如何解决电子墨水屏性能瓶颈&#xff1a;深度解析Android启动器优化策略 【免费下载链接】E-Ink-Launcher E-reader Launcher for Android, Electronic paper book... 项目地址: https://gitcode.com/gh_mirrors/ei/E-Ink-Launcher E-Ink Launche…...

Graphormer实战:输入SMILES字符串,5分钟获取分子属性预测结果

Graphormer实战&#xff1a;输入SMILES字符串&#xff0c;5分钟获取分子属性预测结果 1. 为什么选择Graphormer进行分子属性预测 在药物发现和材料科学领域&#xff0c;准确预测分子属性是核心挑战之一。传统方法通常需要复杂的实验或耗时的计算模拟&#xff0c;而Graphormer…...

Karpathy新玩法:AI搭建个人知识库,改写大模型记忆逻辑

【导语&#xff1a;Karpathy推出用AI搭建个人知识库的新玩法&#xff0c;该知识库能自我更新、越用越聪明。其搭建教程涵盖导入数据、前端查看、实际运用等步骤&#xff0c;还转变了大模型记忆逻辑&#xff0c;影响深远。】AI知识库&#xff1a;从“存储工具”到“运行系统”传…...

kys-cpp代码规范与最佳实践:如何编写高质量的C++游戏代码

kys-cpp代码规范与最佳实践&#xff1a;如何编写高质量的C游戏代码 【免费下载链接】kys-cpp 《金庸群侠传》c复刻版&#xff0c;已完工 项目地址: https://gitcode.com/gh_mirrors/ky/kys-cpp kys-cpp作为《金庸群侠传》的C复刻版项目&#xff0c;其代码质量直接影响游…...

Qwen3.5-9B-AWQ-4bit效果实测:不同光照/角度图片的主体识别准确率展示

Qwen3.5-9B-AWQ-4bit效果实测&#xff1a;不同光照/角度图片的主体识别准确率展示 1. 模型能力概述 千问3.5-9B-AWQ-4bit是一个支持图像理解的多模态模型&#xff0c;能够结合上传图片与文字提示词&#xff0c;输出中文分析结果。这个量化版本特别适合处理图片主体识别、场景…...

别再只盯着IOU了!手把手拆解DeepSort级联匹配,看它如何用‘优先级’解决ID跳变

别再只盯着IOU了&#xff01;手把手拆解DeepSort级联匹配&#xff0c;看它如何用‘优先级’解决ID跳变 当你在监控视频中看到行人ID突然从"007"跳变成"1024"时&#xff0c;是否曾怀疑自己的多目标跟踪系统被黑客入侵&#xff1f;这种被称为ID跳变&#xff…...

次元画室结合Transformer架构:提升图像生成连贯性与细节

次元画室结合Transformer架构&#xff1a;提升图像生成连贯性与细节 你有没有遇到过这样的情况&#xff1f;想用AI画师创作一个漫画故事&#xff0c;第一格主角穿着红色外套&#xff0c;到了第三格&#xff0c;外套颜色莫名其妙变成了蓝色&#xff0c;或者背景里的建筑细节对不…...