java +selenuim使用js显示控件
2023-09-11 14:14:15 时间
操作selenium控件时,往往需要有些控件提前显示,特别是后台的一些控件,或者需要使用鼠标显示下拉的操作,有时鼠标悬停,在点击不怎么好使,就可以依靠js方式,提前让控件显示。
1.使用style的方式让其显示
案例1:
使用修改样式的block(显示)与none(不显示),方法如下:
JavascriptExecutor js = (JavascriptExecutor) driver; String myjs = "document.querySelector(\'"+css+"\').style.display='block';"; js.executeScript(myjs);
原始页面顾客管理下拉框不显示内容
修改页面样式为block,下拉框内容显示
控制台操作显示:
document.querySelector('#js_pageHD-nav > ul > li:nth-child(3) > div').style.display='block' "block"
控制台操作隐藏
document.querySelector('#js_pageHD-nav > ul > li:nth-child(3) > div').style.display='none'
确认定位元素是是否正确,在chorm控制台中打印
通过xpath定位,以及通过id定位原理类似,在document的函数中提供了很多方法
2.修改class显示样式
如鼠标浮动到发货管理,点击下面的发货,鼠标移动不好使,直接显示页面元素点击发货,观察加载的样式
1.未显示下拉框时的样式
2.显示下拉框的样式
发现从div的class=” dropMenu hideCss3” 变为class=” dropMenu hideCss3 showCss3” 页面内容就显示了,那解决办法有以下两种
方案1:删除class,不使用样式
1.步骤:1.先定位到改元素,并且获取到改元素的class
$('#headMenuLists > li:nth-child(6) > div') 定位元素 [div.dropMenu.hideCss3] $('#headMenuLists > li:nth-child(6) > div').attr('class') 获取class "dropMenu hideCss3"
步骤2:删除class
$('#headMenuLists > li:nth-child(6) > div').removeClass('dropMenu hideCss3')
界面内容显示为无样式
页面元素显示发生了变化
目前已经可以直接点击需要的元素,可以不通过鼠标移动到发货管理进行显示
2.直接设置要显示的class的样式
代码:
('#headMenuLists > li:nth-child(6) > div').attr('class',' dropMenu hideCss3 showCss3')
[div.dropMenu.hideCss3.showCss3]
页面显示
3.删除class,在增加class
删除已有的class,增加新的class(如果觉得第一种太暴力了,可以删除后在增加,显示已有样式)
$('#headMenuLists > li:nth-child(6) > div').removeClass('dropMenu hideCss3')
$('#headMenuLists > li:nth-child(6) > div').addClass('dropMenu hideCss3 showCss3')
以上在Java中使用就很简单
JavascriptExecutor js=(JavascriptExecutor) driver;实例js String myjs = "$('#headMenuLists > li:nth-child(6) > div').attr('class',' dropMenu hideCss3 showCss3')"; js.executeScript();//执行
4.使用js打开一个新窗口,做后台查数据很快
JavascriptExecutor js=(JavascriptExecutor) driver; js.executeScript("window.open('"+getURl+"')") #geturl为需要打开的地址,如果为空 js.executeScript("window.open('blank')");//打开空白页面
5.使用id进行显示
JavascriptExecutor js = (JavascriptExecutor) driver; String myjs = "document.getElementById('mini_cart').style.display='block'"; js.executeScript(myjs);
相关文章
- Java学习之java高级特性
- java中string类型转换成map
- Hive-java.lang.ClassNotFoundException: org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe
- 【JAVA】连接TomCat中Context的数据源操作数据库(源代码示例+注释)
- JAVA WEB ------ 文件下载及导出数据到office Execl表格
- Java Date Time 教程-java.util.Date
- Windows下开发环境的搭建(前端vue后端java)
- Java项目(前端vue后台java微服务)在线考试系统(java+vue+springboot+mysql+maven)
- 终于有人把Java程序员必学知识点整理出来了,令人有如醍醐灌顶
- JS模式:jq中简单的模式--》采摘自js设计(tomxu_version)
- 基于Java(Spring+SpringMVC+MyBatis)+MySQL实现的毕业设计管理系统【100010487】
- 1. java.util.concurrent - Java 并发工具包
- java整理软件--- Java OCR 图像智能字符识别技术,可识别中文,但是验证码不可以识别...已测识别中文效果很好
- Java 虚拟机编程接口JVMIT
- Java执行定时任务
- Java 设计模式之桥接模式,Java 桥接模式 ,java Bridge Pattern
- 前后端加密解密 【JS加密模块(md5 、 crypto 、 crypto-js、jsencrypt) python RSA加密解密(pycryptodome )模块安装与使用】
- js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素
- 正确使用MySQL JDBC setFetchSize()方法解决JDBC处理大结果集 java.lang.OutOfMemoryError: Java heap space
- java高级用法之:在JNA中将本地方法映射到JAVA代码中
- JS 将数字字符串数组转为 数字数组 (互换),js获取数组对象中 某一个key的值,js判断一个数组是否包含另一个数组(一维数组)
- JAVA_用Java来获取访问者真实的IP地址
- JAVA学习.java.sql.date 与java.util.date以及gettime()方法的分析
- Java空指针异常解决java.lang.NullPointerException解决心得
- java学习路线-Java技术人员之路从0基础到高级
- 实操代码研究各种Java技术-java.toutiao.im
- 【cocos2d-js官方文档】五、Cocos2d-JS v3.0的新Action API
- 简单的JAVA MVC框架模式--Java-servlet-JavaBean
- java结合node.js非对称加密,实现密文登录传参——让前后端分离的项目更安全
- js-原生Js汉语拼音首字母匹配城市名
- 源码阅读(5):Java中主要的List结构——Stack集合
- Java-购物车实践与应用
- 【SQL Bugs】Caused by: java.sql.SQLSyntaxErrorException: ORA-01789: 查询块具有不正确的结果列数(原因记录)
- Java 四大内部类有点全