【Selenium】隐藏元素的定位和操作

news2024/9/26 1:19:10

一、selenium 中隐藏元素如何定位?

如果单纯的定位的话,隐藏元素和普通不隐藏元素定位没啥区别,用正常定位方法就行了
但是吧~~~能定位到并不意味着能操作元素(如click,clear,send_keys)

二、隐藏元素

如下图有个输入框和一个登录的按钮,本来是显示的
 
元素的属性隐藏和显示,主要是 type="hidden"和 style="display: none;"属性来控制的,接下来在元素属性里面让它隐藏
<!DOCTYPE html>
	<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Title</title>
	</head>

	<body>
		<p>这里有个按钮,是隐藏的
		<!-- type="hidden" -->
		<br>
			输入账号<input id="chi" name="hello" type="hidden">

		<!-- style="display: none;" -->
		<br>
		<button id="fan" name="heo" style="display: none;">登录</button>
		<br>
		<a hidden id="baidu" href="https://www.baidu.com">访问百度</a>
		</p>
	</body>
</html>
结果如下:

三、定位隐藏元素

隐藏元素用普通元素定位方法——可以定位到!

webDriver.get("file:front/display.html");
WebElement chi = webDriver.findElement(By.id("chi"));

//获取元素属性
System.out.println(chi.getAttribute("name"));//hello

//查看元素是否隐藏
System.out.println(chi.isDisplayed());//false

//运行结果可以看出,隐藏元素用普通定位方法一样可以定位到!

四、操作隐藏元素

隐藏元素可以正常定位到,只是不能操作(定位元素和操作元素是两码事,操作元素是 click,clear,send_keys 这些方法

用隐藏元素的sendKeys 和 click 方法都会报错:ElementNotInteractableException: element not interactable元素不可交互,不可以被操作。

首先 selenium 是无法操作隐藏元素的(但是能正常定位到),本身这个框架就是设计如此,如果非要去操作隐藏元素,那就用 js 的方法去操作,selenium 提供了一个入口 可 以 执行 js 脚 本。

js 和 selenium 不同,页面上有的元素(在 dom 里面的),都能正常的操作, 可以详看前面的js篇

js操作隐藏元素
<a hidden id="baidu" href="https://www.baidu.com">访问百度</a> 这个链 接是隐藏的,但是能用 js 点到
 //js点击 hidden 元素 百度
        WebElement element = webDriver.findElement(By.id("baidu"));
        JavascriptExecutor javascriptExecutor = webDriver;
        javascriptExecutor.executeScript("arguments[0].click()",element);
运行完之后,页面正常的点击,跳转到百度页面了
⚠️ 也可以先用 js 去掉 hidden 属性,再用 selenium 操作,但是可以直接js点击,何必多此一举~

 

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

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

相关文章

如何在 Postman 中执行断言测试?

在当今的软件构建流程中&#xff0c;应用程序编程接口&#xff0c;简称 API&#xff0c;起到了不可或缺的作用&#xff0c;它们使得不同的软件应用能够互相沟通和交换数据。随着应用程序的不断演进变得越发复杂&#xff0c;保障API的可靠性及其稳定性显得格外关键。正因如此&am…

ARM64汇编08 - 块访存指令

armv8 里面似乎没有了 v7 中的块访存指令&#xff0c;就是一次性访问一块内存的指令。我们还是先介绍下 v7 中的块访存指令。 V7中的块访存指令​ 手册中介绍了很多种该指令的变种形式&#xff0c;其实了解了这个指令的英文含义就都很好理解。 LD - load&#xff0c;加载 M …

C++:部分题目

1. 封装、继承、多态 封装&#xff1a;将所需的数据成员&#xff0c;以及对数据的操作方法&#xff08;成员函数&#xff09;&#xff0c;绑定在一起成为类&#xff08;类型&#xff09;&#xff0c;定义该类型的对象时&#xff0c;成员被自动隐藏在对象内部。通过封装可以限定…

SOLIDWORKS Simulation子模型分析的使用方法

子模型介绍 SOLIDWORKS Simulation的子模型基于圣维南原理。对于一个比较复杂的模型&#xff0c;如果想升级局部的应力计算精度&#xff0c;就需要对整个模型的网格进行调整并重新进行计算&#xff0c;整个过程耗时较长而且不容易得到满意的结果。 SOLIDWORKS Simulation的子…

【深度学习】训练Stable Diffusion环境

仓库&#xff1a; https://github.com/bmaltais/kohya_ss.git 基础镜像&#xff1a; from kevinchina/deeplearning:sdxllighting_trt_nginx_002api docker run --net host --gpus device0 -e APIWORKS1 -it t1:t1 bash构建环境&#xff1a; sudo -i git clone https://git…

面试常问:为什么 Vite 速度比 Webpack 快

前言 最近作者在学习 webpack 相关的知识&#xff0c;之前一直对这个问题不是特别了解&#xff0c;甚至讲不出个123....&#xff0c;这个问题在面试中也是常见的&#xff0c;作者在学习的过程当中总结了以下几点&#xff0c;在这里分享给大家看一下&#xff0c;当然最重要的是…

【MySQL配置】Windows环境下载并安装MySQL数据库(内含图片,保姆级指引)

一、下载自身所需Mysql 官网链接&#xff1a;https://dev.mysql.com/downloads/installer/ 点击Download后&#xff0c;跳转如下页面。你可以点击注册一个谷歌账号(不是硬性要求)&#xff0c;或者直接如图开始下载。 二、安装所下载的版本 1、双击下载的MySQL文件 2、选择…

深入理解与实践AB测试:从理论到实战案例解析

一、引言 在互联网产品优化和运营策略制定中&#xff0c;AB测试&#xff08;也称为分组测试或随机化对照实验&#xff09;是一种科学且严谨的方法。它通过将用户群体随机分配至不同的实验组&#xff08;通常是A组和B组&#xff09;&#xff0c;对比不同版本的产品或策略对关键…

MySQl基础入门⑫

上一遍文章内容 查询时选择行 1.查询指定记录 假设students表包含字段name, major, 和 email&#xff0c;我们可以构造一个查询来找出所有专业为“计算机科学”且邮箱中包含"university.edu"的学生姓名和邮箱&#xff1a; SELECT name, email FROM students WHER…

种植新革命:科技赋能绿色未来

《种植新革命&#xff1a;科技赋能绿色未来》 一、种植技术的颠覆式创新 随着科技的飞速发展&#xff0c;种植技术也在经历一场颠覆式的创新。传统的种植方式&#xff0c;虽然历史悠久&#xff0c;经验丰富&#xff0c;但在面对现代化、大规模、高效的需求时&#xff0c;逐渐…

一分钟带你入门Selenium入门!【建议收藏】

Selenium入门 欢迎阅读Selenium入门讲义&#xff0c;本讲义将会重点介绍Selenium的入门知识以及Selenium的前置知识。 自动化测试的基础 在Selenium的课程以前&#xff0c;我们先回顾一下软件测试的基本原理&#xff0c;为我们进一步完成Selenium自动化测试做好准备。 软件…

解决GNURadio自定义Python OOT块-导入块时报错问题

文章目录 前言一、问题描述二、解决方法1、卸载已安装的 OOT 块2、重新编译及安装3、重新测试 前言 本文记录在 GNURadio 自定义Python OOT 块后导入块时报错 ModuleNotFoundError: No module named xxx。 一、问题描述 参考官方教程 Creating Python OOT with gr-modtool 创…

【ppt技巧】PPT转换为图片,方法有哪些?

想要将ppt文件转换为图片&#xff0c;其实很简单&#xff0c;一起来看一下如何操作吧&#xff01; 方法一&#xff1a; 使用格式转换器&#xff0c;有些文件格式转换器&#xff0c;支持ppt转换为图片。 方法二&#xff1a; 不需要转换器&#xff0c;直接在ppt中进行操作即可…

linux上安装locust并进行压测demo

我的linux服务器上有两个python版本 使用python3 pip3 install locust 过程中有一些报错 第一个报错 gcc: error trying to exec cc1plus: execvp: No such file or directoryerror: command gcc failed with exit status 1第二个报错 src/greenlet/greenlet_refs.hpp:181:19…

数据库:基本操作与用户授权

一 基本操作 1 SQL分类 数据库&#xff1a;database 表&#xff1a;table&#xff0c;行&#xff1a;row 列&#xff1a;column 索引&#xff1a;index 视图&#xff1a;view 存储过程&#xff1a;procedure 存储函数&#xff1a;function 触发器&#xff1a;trigger 事…

文件操作:文本文件(写/读)

文件操作可以将数据永久化&#xff0c;C中对文件操作需要包含头文件 < fstream > 文件类型分为两种&#xff1a; 1. 文本文件&#xff1a;文件以文本的ASCII码形式存储在计算机中 2. 二进制文件&#xff1a;文件以文本的二进制形式存储在计算机中&#xff0c;…

理解计算属性等

计算属性 计算属性的作用是将写在computed内的写了对应的属性名&#xff0c;属性值都是函数&#xff0c;将这属性值的函数调用之后的返回值赋给属性名的变量。因此其实计算属性内的是值&#xff0c;不是方法&#xff0c;因此写插值等语句是只是写变量&#xff0c;而不是调用。且…

电气接点在线测温解决方案--ARTM电气接点在线测温装置

ARTM系列电气接点在线测温装置适用于高低压开关柜内电缆接头、断路器触头、刀闸开关、高压电缆中间头、干式变压低压大电流等设备的温度监测&#xff0c;防止在运行过程中因氧化、松动、灰尘等因素造成接点接触电阻过大而发热成为安全隐者、患&#xff0c;提高设备安全保障&…

Linux 磁盘的一生

注意&#xff1a;实验环境都是使用VMware模拟 ​ 磁盘接口类型这里vm中是SCSI&#xff0c;扩展sata,ide(有时间可以看看或者磁盘的历史) ​ 总结&#xff1a;磁盘从有到无—类似于建房子到可以住 ————————————————————————————————————…

【MyBatis】in根据查询的顺序返回结果

目标效果&#xff1a;根据in中元素的顺序返回结果 查询id为&#xff08;2&#xff0c;4&#xff0c;1&#xff0c;3&#xff09;的数据&#xff0c;并按此顺序返回 第一次尝试 select id, name from tb_shop where id in (2, 4, 1, 3);期待效果 实际效果 正确的语句 select …