By Mejias

网上有很多教程使用SELENIUM去操作页面下拉框并选中,比如Select(web element).select_by_value(option)。也有使用selenium对输入框输入内容,具体方法是两步:定位到输入框id,然后对输入框使用.send_keys()方法(Driver.find_element(By.id,#id).send_keys())。由于个人之前写的一个工具定义了很多方法。(具体参照上篇文章)

Python Selenium 抓取Shadow Dom内部元素方法更新https://blog.csdn.net/m0_55341949/article/details/121500244?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164508305416780261954890%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164508305416780261954890&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-121500244.first_rank_v2_pc_rank_v29&utm_term=PYTHON+SELENIUM%E6%8A%93%E5%8F%96shadow+dom+%E5%86%85%E9%83%A8%E5%85%83%E7%B4%A0%E6%96%B9%E6%B3%95%E6%9B%B4%E6%96%B0&spm=1018.2226.3001.4187

其中习惯性耶使用了很多Driver.execute_script()的方法来执行JS语句,在持续维护开发工具中增加了上面两个需要,所以想通过python运行JS语句去实现这两个功能。

这样操作的好处在上篇文章也有说过,主要有不需要很多的等待时间,也不用写许多的wait.until的代码,因为是对DOM的文档内容的读取,速度上显得快了许多。

这两个的网页源码如下所示:

一:JS代码对下拉框的操作

上面的网页源代码表示这两个元素也是在shadow树内部,具体如何操作的解释在上篇文章有提及Python Selenium 抓取Shadow Dom内部元素方法更新https://blog.csdn.net/m0_55341949/article/details/121500244?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164508305416780261954890%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164508305416780261954890&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-121500244.first_rank_v2_pc_rank_v29&utm_term=PYTHON+SELENIUM%E6%8A%93%E5%8F%96shadow+dom+%E5%86%85%E9%83%A8%E5%85%83%E7%B4%A0%E6%96%B9%E6%B3%95%E6%9B%B4%E6%96%B0&spm=1018.2226.3001.4187

对下拉单使用JS代码可以先在JS代码中先定位到select type的ID,然后使用属性options[index]定位到需要选择的下拉框。如上面源码表示“SearchPage”在第一个,那么index就是0。同时将选中的下拉框的selected属性赋值为True这样就保证它已经被选中了。

def control_in_shadow(driver,js):shadow = driver.execute_script(js)return shadow
jsS = 'document.querySelector("#ra-shadow-root").shadowRoot.getElementById("ra-asin-list-source-selector").options[0].selected=true'
select_id = control_in_shadow(driver,jsS)

二、JS代码对输入框输入值的操作

上面的网页源代码表示这两个元素也是在shadow树内部,具体如何操作的解释在上篇文章有提及Python Selenium 抓取Shadow Dom内部元素方法更新https://blog.csdn.net/m0_55341949/article/details/121500244?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164508305416780261954890%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164508305416780261954890&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-121500244.first_rank_v2_pc_rank_v29&utm_term=PYTHON+SELENIUM%E6%8A%93%E5%8F%96shadow+dom+%E5%86%85%E9%83%A8%E5%85%83%E7%B4%A0%E6%96%B9%E6%B3%95%E6%9B%B4%E6%96%B0&spm=1018.2226.3001.4187

对输入框使用JS代码输入特定值的方法是,先在JS代码内部定位到input box的id,然后使用它的value属性,将需要输入的值赋值给这个属性即可。

def control_in_shadow(driver,js):shadow = driver.execute_script(js)return shadow
js1 = 'return document.querySelector("#ra-shadow-root").shadowRoot.getElementById("ra-asin-list-count-input").value=1000'
#shadow= control_in_shadow(driver,js)
input_id = control_in_shadow(driver,js1)

PYTHON SELENIUM运用execute_script(JS)选择页面下拉框在输入框输入值相关推荐

  1. python爬取下拉列表数据_Python+selenium之获取文本值和下拉框选择数据

    Python+selenium之获取文本值和下拉框选择数据 一.结合实例进行描述 1. 实例如下所示: #新增标签操作 def func_labels(self): self.driver.find_ ...

  2. 下拉框选中状态html,js中select下拉框选中

    怎么用js动态 设置select中的某个值为选中值 select 中的某个options为新建,但在子页面新建一个选项时怎么能提交新用JS动态设置select的方法如下: 手动通过原生JS来实现: / ...

  3. store下拉框同步_关于选择主下拉框后~后面的下拉框跟着同步一起变化的问题~~...

    关于选择主下拉框后~后面的下拉框跟着同步一起变化的问题~~ 代码很简单~4个下拉框~想要实现的效果就是~主下拉框选择了"赵子龙",后面3个下拉框当前选项也同步成"赵子龙& ...

  4. bootstrap-multiselect.js多选下拉框初始化时默认选中初始值

    bootstrap-multiselect.js多选下拉框默认值设置 一.案例数据格式  二.HTML代码 <select id="msgRoles" multiple=&q ...

  5. IE6下使用jquery.bgiframe.js插件解决下拉框覆盖浮动层、Dialog的问题

    IE6下使用jquery.bgiframe.js插件解决下拉框覆盖浮动层.Dialog的问题 参考文章: (1)IE6下使用jquery.bgiframe.js插件解决下拉框覆盖浮动层.Dialog的 ...

  6. ABAP选择屏幕下拉框

    导语:好久没有写选择屏幕了,下面分享一个选择屏幕下拉框的实现,用户认为在选择屏幕上的搜索帮助不太友好,希望做一个下拉框来选. 一.直接引用标准值 第一种是最基础的,直接依靠表字段的搜索帮助等系统自带的 ...

  7. html取消select下拉,取消下拉选项_jquery如何取消选择select下拉框

    摘要 腾兴网为您分享:jquery如何取消选择select下拉框,中邮网院,天天美剧,搜狐视频,七哈小说等软件知识,以及比特彗星,cad素材包,交易猫app,视频调色软件,网易云歌单,小米温湿度传感器 ...

  8. 使用HTML5和JS实现日期下拉框功能

    使用HTML5和JS实现日期下拉框功能 如图所示: 代码如下: <center><span style="font-size:26pt;color:red;"&g ...

  9. js填充select下拉框并选择默认值

    /* 使用json数组填充下拉框并复选 *//* 初始化下拉框数据 */ var jsonStr = { "data": [] }; for (var str in JsonStr ...

最新文章

  1. 批处理***与注册表
  2. 内控与IT安全的关系,IT内控与安全审计的关系
  3. ANSI和UNICODE字符串处理函数
  4. qt4.7 字体字号设设置;中文乱码,
  5. Spark中Data skew(数据倾斜)Java+Python+Scala三种接口完整代码
  6. 《Linux内核分析》期末总结及学习心得
  7. vue 数组中嵌套的对象添加新属性--页面更新
  8. oracle DBTIMEZONE时区调整
  9. 最后剩下的,只有随遇而安,偶尔我会想起你:伤感日志
  10. 数据分析软件哪个最好用?
  11. CAD软件几何数据存储原理
  12. N81 UCWEB 7.0,UC浏览器7.0版本
  13. pvqc计算机类专业英语,计算机 英文
  14. NFT引发的“十大行业变局”
  15. Python数据分析之数据预处理(数据清洗、数据合并、数据重塑、数据转换)学习笔记
  16. wxWidgets教程(14)——书签控件wxBookCtrl
  17. Error (12006): Node instance inst instantiates undefined entity uart_sys
  18. Intel 82599网卡异常挂死原因
  19. 网页设计HTML经典语法大全
  20. 几种代表性的相控阵系统简介

热门文章

  1. 2021 年 iOS 应用程序开发七种最佳语言
  2. win10 linux子系统 wsl 运行appimage 应用
  3. 【弄nèng - Activiti6】Activiti6入门篇(九)—— 邮件任务
  4. br标签有没有结束标签
  5. python 编写实用小工具-toy: python平时积累的笔记以及编写的小工具
  6. jqgrid不显示分页图标问题
  7. 华为OD机试题 - 开心消消乐(JavaScript)| 机考必刷
  8. echarts-去掉垂直网格线
  9. 微服务之Nacos注册与配置
  10. 日志审计系统如何和服务器互联,服务器如何查看审计日志