应用场景

在自动化中, 能对JS代码进行增、删、改的话,可以帮助我们解决很多问题,

如:修改<a>标签的target属性,让它不打开新的窗口(_blank),从而不用频繁使用switch_to进行窗口之间的切换。

如:日期的输入框被锁定无法直接输入,需要点开日历控件后,从日历控件上点击日期,这时就可以删除日期控件元素中限制输入的属性(readonly)后直接输入日期。

使用JS修改HTML元素,是在浏览器解析后将其删除或添加,源码不会改变。

基本使用

使用JS定位

JS的定位,可以使用Id \Class(类名)\TagName(标签)来定位元素,两者在使用上有点不同

  • 使用ID定位时,定位到的是单个对象
  • 使用CLASSTagName定位的时候,返回的是复数对象(类似于elements的复数定位),使用的时候需要用 [下标] 指定要第几个对象
# 通过ID定位
'document.getElementById("ID值")' # 通过CLASS定位 ->class有多个值的话用空格格开
'document.getElementsByClassName("Class值")[下标]' # 通过TagName定位
'document.getElementsByTagName("标签名")[下标]' # 通过CSS定位
# 定位百度首页的"地图" ->要注意嵌套的引号要使用 \\ 标记
'document.querySelector("div[id=\\"s-top-left\\"]>a[href=\\"http://map.baidu.com\\"]") # 使用querySelectorAll的话就变成返回列表就要加上 [下标]

JS进行的操作()

# 增加属性 并 赋值
'.setAttribute("要增加的属性","要赋的值")'
# 删除属性
'.removeAttribute("属性名")'
# 获得属性的值
'.getAttributte("属性名")'
# 修改属性值
'.属性名="值"'

运行

调用Selenium的方法execute_scripts(定位)在浏览器中执行JavaScript代码(使用引号包裹)

# 基础使用 删除ID值为'top'的标签,的title属性
'document.getElementById("top").removeAttribute("title")' # 返回top的文本
'return document.getElementById("top").innerText' # 执行
driver.execute_script('document.getElementById("top").removeAttribute("title")')

使用selenium的定位方法()

我们也可以使用arguments对象,在selenium中定位之后再传入JS使用增删改操作

arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数.

# 先使用selenium的定位方法
a =driver.find_elements(By.TAG_NAME,'a')[3] # 再传入使用js操作
driver.execute_script("arguments[0].removeAttribute('属性名')", a) # 但是不能使用下面的这种形式,会报错
a =driver.find_elements(By.TAG_NAME,'a')
driver.execute_script("arguments[3].removeAttribute('属性名')", a)

以上为个人学习记录,欢迎各位指导补充!

Python+Selenium4自动化之JS属性的更多相关文章

  1. python UI自动化之js操作

    js处理iframe无需先切换到iframe上,再切回来操作.它可以在iframe上和主页面上来回自由操作. switch方法需要先切换到iframe上,操作完之后又的切换回来(很容易忘记切换回来), ...

  2. python UI自动化之JS定位

    1.话不多说,直接贴入代码 上面的 document.getElementById 可以替换成别的定位方式,比如: 通过name获取:document.getElementsByName 通过标签获取 ...

  3. 【Python + Selenium】之JS定位总结

    感谢:小琰子 Python+Selenium 脚本中的一些js的用法汇总: 1.滚动条 driver.set_window_size(500,500) js = "window.scroll ...

  4. python接口自动化(十)--post请求四种传送正文方式(详解)

    简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...

  5. python接口自动化-Cookie_绕过验证码登录

    前言 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以通过添加Cookie的方式绕过验证码 前面在“pyt ...

  6. Workbench利用Python驱动DM执行Js进行建模

    Workbench的工作平台下可以利用Python进行一些操作,包括添加system和component等等.DM可以通过执行Jscript脚本进行自动建模,因此,结合这两块的内容,可以利用Pytho ...

  7. python接口自动化28-requests-html爬虫框架

    前言 requests库的好,只有用过的人才知道,最近这个库的作者又出了一个好用的爬虫框架requests-html.之前解析html页面用过了lxml和bs4, requests-html集成了一些 ...

  8. python selenium自动化点击页面链接测试

    python selenium自动化点击页面链接测试 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回 ...

  9. python接口自动化-参数化

    原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...

  10. python接口自动化4-绕过验证码登录(cookie)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...

随机推荐

  1. KMP字符串对比算法及next数组计算

    (注:该贴主要运用python实现该算法) 先谈谈KMP算法吧.KMP算法的全称是Knuth-Morris-Pratt 算法,它是用来进行字符串查找,即在某个主字符串里面找到某个特定子字符串.但是好像 ...

  2. 实战指南,SpringBoot + Mybatis 如何对接多数据源

    本文分享自华为云社区 <实战指南,SpringBoot + Mybatis 如何对接多数据源>,作者:战斧. 在我们开发一些具有综合功能的项目时,往往会碰到一种情况,需要同时连接多个数据库 ...

  3. u-boot启动流程

    U-Boot(Universal Bootloader)是一个通用的开源引导加载程序,通常用于嵌入式系统中,负责引导操作系统或加载 Linux 内核等任务.U-Boot的启动流程可以概括为以下几个关键 ...

  4. gestureRecognition

    这段代码定义了一个名为 gestureRecognition 的函数,它用于识别手势并显示在摄像头或指定图像上.以下是对代码的详细注释:1. 初始化一个空字符串 ges,用于存储手势结果.如果 sel ...

  5. vscode没有完全汉化怎么办? vs code部分内容没汉化的解决办法

  6. 【WPF】单例软件实现自重启

    原文地址 https://www.cnblogs.com/younShieh/p/17749694.html 如果本文对你有所帮助,不妨点个关注和推荐呀,这是对笔者最大的支持~   在WPF应用程序中 ...

  7. 基于ZXing.NET实现的二维码生成和识别客户端

    一.前言 ZXing.Net的一个可移植软件包,是一个开源的.多格式的1D/2D条形码图像处理库,最初是用Java实现的.已经过大量优化和改进,它已经被手动移植.它与.Net 2.0..Net 3.5 ...

  8. 基于LangChain的LLM应用开发2——模型、提示和输出解析

    本次会讲解LangChain的三个基本组件:模型.提示和解析器. 名词解析 模型(Models):是指作为基础的大语言模型.LangChain中通过ChatOpenAI或者AzureChatOpenA ...

  9. 【Azure Logic App】在Azure Logic App中使用SMTP发送邮件示例

    问题描述 在Azure Logic App的官网介绍中,使用SMTP组件发送邮件非常简单(https://docs.azure.cn/zh-cn/connectors/connectors-creat ...

  10. Docker磁盘&内存&CPU资源实战

    Docker 资源实战:cpu/内存配置: #查看帮助 docker run --help docker update --help #配置容器使用cpu /内存大小--privileged 给与容器 ...