selenium中定位shadow-root,以及获取shadow-root内部的数据

news2024/11/15 12:27:53

通过shadow-root的父级定位到shadow-root,再通过语句进行操作
两种方法:
第一种,Python种JS实现
第二种,selenium实现

1.0 案例网站

参考某橘色网站
在这里插入图片描述

2.0 js语句定位

可在控制台进行测试
在这里插入图片描述
测试语句

document.querySelector("ali-bar-new").shadowRoot.querySelector("ali-bar-menu").shadowRoot.querySelector("div")

3.0 python实现js的方法

3.1 selenium实现

execute_实现

driver.execute_script('document.querySelector("ali-bar-new").shadowRoot.querySelector("ali-bar-menu").shadowRoot.querySelector("div")')

python直接实现

# example
root = driver.find_element("id", "form-shadow-root")
shadow_root = root.shadow_root
textfield = shadow_root.find_element_by_css_selector("div#dialog > div:nth-child(2) input")  # id为dialog的div的下一级div的第二个,之后的相对的input tag(无所谓层级)
btn = shadow_root.find_element_by_css_selector("button[class='btn next-button']") # tag为button的class为该值的元素
dropdown_item = shadow_root.find_element_by_css_selector('#search-field').find_element_by_xpath("//div//ul/li[text()='default']")  # 先找css然后再找sub element

3.2 python中直接调用执行js

3.2.1 基本操作

import js2py# 执行单行js语句
result = js2py.eval_js("console.log(abcd)")
print(result)
# 执行写在js文件中的
log = js2py.eval_js(open('./log.js','r',encoding='utf-8').read())
print(log)

js = js2py.EvalJs({})
js.execute("js语句")


import js2py
#创建js执行环境,返回一个上下文对象
content = js2py.EvalJs()
#执行js代码
#获取时间戳的js代码
js_text = '''
      var r = new Date().getTime()   
'''
content.execute(js_text)
print(content.r)
#执行js函数法二:
#会将文件中的代码添加到content对象中
content.execute(open('./log.js','r',encoding='utf-8').read())
print(content.需要执行的函数名('数据'))  #调用js代码中名为的函数

3.2.2 execjs实现

import execjs
js_code = open('file.js',encoding='utf-8').read()
ctx = execjs.compile(js_code)# 第一个参数为ja代码中的函数名, 后面为函数对应的参数
result = ctx.call('function_name', *args)

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

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

相关文章

猫头虎博主解析:Spring中的“Unknown return value type: java.lang.Boolean“问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

纽扣电池做CE认证 需要的介绍 EMC检测、RED检测和LVD检测

认证需要测试什么项目 1、EMC检测项目:传导骚扰、辐射骚扰、静电放电抗扰度、射频电磁场辐射抗扰度、电快速瞬变脉)冲群抗扰度、浪涌(冲击)抗扰度、射频场感应的传导抗扰度、工频磁场抗扰度、电压暂降、短时中断和电压变化抗扰度、谐波电流、电压波动和闪烁。 2、LVD检测项目:…

Laf 中大猫谱:让每一只流浪猫都有家

猫谱简介 中大猫谱是一款辅助校园流浪猫救助的开源小程序项目,服务端使用 Laf 云开发。 猫谱主要功能包括:猫咪信息登记、照片分享、拍照识猫、公告和留言等。项目创立的初衷,是解决校园猫猫交流群里的一个常见问题:问猫猫是谁。…

NLP模型(五)——Transformer模型介绍

文章目录 1. Transformer结构2. Encoder结构2.1 Transformer输入2.2 相对位置编码2.3 Self-Attention2.4 Multi-Head Attention2.5 Encoder 整体 3. Decoder结构3.1 带Mask的Multi-Head Attention3.2 Multi-Head Attention 4. 预测层 1. Transformer结构 Transformer的结构如下…

go锁--读写锁

每个锁分为读锁和写锁,写锁互斥 没有加写锁时,多个协程都可以加读锁 加了写锁时,无法加读锁,读协程排队等待 加了读锁,写锁排队等待 w:互斥锁作为写锁 writerSem:作为写协程队列 readerSem:作为读协程队列 readerCoun…

Linkedin营销小技巧,开发客户必看

众所周知,Linkedin是发展业务、拓展人脉的好地方,在过去的一年里,93%的B2B营销人员最常使用该平台来有机分发内容。Linkedin也因为能产生较好的营销效果而成为跨境业务开发的选择平台。 有些企业可以使用Linkedin向潜在用户进行营销和接触&a…

Leetcode1006笨阶乘

思路:以4为一个分组分别进行处理 class Solution:def clumsy(self, n: int) -> int:answer_dict {0:0,1: 1, 2: 2, 3: 6, 4: 7}if n > 4:answer n * (n - 1) // (n - 2) n - 3n - 4else:print(answer_dict[n])return answer_dict[n]print(answer)while n …

2023年京东方便食品行业数据分析(京东数据报告)

​疫情中方便食品的销售一度火爆,但随着当前消费场景的开放,方便食品销售又恢复常态并开始下滑。根据鲸参谋电商数据分析平台的相关数据显示,今年7月份,京东平台方便食品的销量为800万,环比降低约23%,同比降…

基于Spring Boot的人才公寓管理系统设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的人才公寓管理系统设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java spring…

【Vue3 知识第四讲】数据双向绑定、事件绑定、事件修饰符详解

文章目录 一、数据双向绑定二、事件绑定详解2.1 **Vue中的事件绑定指令**2.2 **事件函数的调用方式**2.3 **事件函数参数传递** 三、事件修饰符3.1 **Vue中常用的事件修饰符**3.2 **按键修饰符** 四、属性绑定五、类与样式的绑定5.1 class 类的绑定5.2 style 样式绑定 一、数据…

数据库知识3

DML 语言 SQL 语言 DDL语言 数据库定义语言 创 create 改 alter 删 dropDML语言 数据库操作语言 对表中的数据进行操做 增 insert 删 delete 改 update insert 插入操作 格式1: insert into 表名(列名1,列名2,…) values(values1,values2&…

【全国大学生IoT设计竞赛】安谋科技赛题三等奖分享:灵飞云卫——基于MM32F5的IOT智慧门禁系统

本文参加极术社区和灵动微电子组织的【有奖征集】分享作品传播技术成果,更有奖品等你来领!线上征集活动。 2023年全国大学生物联网设计竞赛已经落下帷幕,下面将为大家分享我们的作品。 团队介绍 参赛单位:河海大学 队伍名称&…

图 Graph

关键词:图、邻接矩阵、邻接表、广度优先搜索、最短路径、深度优先搜索、拓扑排序、最小生成树、单源最短路径、Dijkstra算法、 图的表示 图的两种表示方法:邻接矩阵表示和邻接表表示。 图的广度优先搜索 可处理无向图或有向图 从起始顶点s出发的广度优…

群晖NAS:DS Video、Jellyfin等视频电影电视剧海报、背景墙搜刮器

群晖NAS:DS Video、Jellyfin等视频电影电视剧海报、背景墙搜刮器 本文只使用豆瓣插件方式,系统默认的 The Movie Database 好注册,但是授权码输入后域名不通过,很麻烦。 1、插件地址: https://www.aliyundrive.com/s…

visual studio编写DLL,python调用

选择第一个c DLL&#xff0c; 然后项目源文件下右击新建项&#xff0c;这里名字随便取&#xff0c;在代码中输入一下内容&#xff1a; #include <iostream>#define EXPORT extern "C" __declspec(dllexport)EXPORT int sub(int a, int b) {return a - b; } 在…

虚幻引擎4中关于设置关于体坐标系下的物体速度的相关问题

虚幻引擎4中关于设置关于体坐标系下的物体速度的相关问题 文章目录 虚幻引擎4中关于设置关于体坐标系下的物体速度的相关问题前言全局坐标系转体坐标系速度设置X轴方向的体坐标系速度设置Y轴方向的体坐标系速度XY轴体坐标系速度整合 Z轴速度的进一步设置解决办法 小结 前言 利…

图扑软件 | 参展用友 2023 全球商业创新大会

2023 年 8 月 18 日&#xff0c;以“数据驱动&#xff0c;智能运营”为主题的用友 2023 全球商业创新大会&#xff0c;在上海国家会展中心圆满举行。此次大会旨在汇聚全球商业智慧&#xff0c;用数智化创新客户价值、释放企业潜能&#xff0c;助力更多的企业成为数智企业。 图…

运动耳机需要具备哪些功能、挂耳式运动蓝牙耳机推荐

作为运动爱好者&#xff0c;长时间的运动很容易枯燥&#xff0c;所以我会选择佩戴耳机来缓解运动的枯燥感&#xff0c;一款好的运动耳机可以让运动变得更加激情&#xff0c;还可以更好的享受运动的乐趣。 但现在的运动耳机产品实在是五花八门&#xff0c;到底什么样的运动蓝牙耳…

ssm+vue框架的购物网站源码和论文

ssmvue框架的购物网站源码和论文113 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归…

Node 执行命令时传参 process.argv

process 对象是一个全局变量&#xff0c;提供当前 Node.js 进程的有关信息&#xff0c;以及控制当前 Node.js 进程。 因为是全局变量&#xff0c;所以无需使用 require()。 process.argv 属性返回一个数组&#xff0c;这个数组包含了启动Node.js进程时的命令行参数&#xff0c…