首页 > 其他分享 >【Selenium】隐藏元素的定位和操作

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

时间:2024-03-21 12:59:17浏览次数:17  
标签:定位 selenium 元素 Selenium js 操作 隐藏

一、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点击,何必多此一举~

 

标签:定位,selenium,元素,Selenium,js,操作,隐藏
From: https://blog.csdn.net/weixin_40772077/article/details/136904874

相关文章

  • vue2/3 - element表格组件el-table实现懒加载树型(上下级)数据、默认展开和隐藏层级,支
    效果图在vue2、vue3项目开发中,使用element饿了么组件库,实现Table表格组件动态懒加载表格数据,可以决定是否自动展开所有2级或3级,也可以点击加载下级数据,可搭配表格的增删改查,数据变化后自动更新列表不会破坏树状的展开和折叠结构。提供详细示例代码,一键复制运行查看效果,稍......
  • js实现页面滚动至指定位置
    实现思路:1、通过判断链接是否有某参数,来决定是否展示第二屏页面2、用offset来获取第二屏与文档顶部距离3、用scrollTop将滚动条滚动至第二屏位置if(location.href.indexOf('part')!=-1){$('html,body').animate({scrollTop:$('.bg2').offset().top},800);}一、offs......
  • selenium (1)浏览器驱动
    要想selenium操纵浏览器,必须下载对应浏览器的驱动,以及正确的安装,这里就不详细说明了。 fromseleniumimportwebdriver#driver=webdriver.Chrome()fromseleniumimportwebdriver用于从selenium这个库中导入webdriver模块。这行代码使得你可以在后续的代码中使用webdriv......
  • MySQL中如何快速定位占用CPU过高的SQL
    作为DBA工作中都会遇到过数据库服务器CPU飙升的场景,我们该如何快速定位问题?又该如何快速找到具体是哪个SQL引发的CPU异常呢?下面我们说两个方法。聊聊MySQL中如何快速定位占用CPU过高的SQL。技术人人都可以磨炼,但处理问题的思路和角度各有不同,希望这篇文章可以抛砖引玉。 以一......
  • Revit二次开发之 对象的隐藏与显示
    在revit开发中,我们经常要对特定元素进行演示和隐藏,但是由于隐藏的有多种不同的情况,我们来分析分析不同需要下的隐藏如何操作。1、隔离   通过隐藏和显示,能保证构件在任何区域都无法呈现,其API如下:IsolateCategoriesTemporary  隔离多个类别IsolateCategoryTemporary......
  • 使用 html 页面编辑精确定位文本文件选中
    如下是一个实例,实现了文本的换行,选中以及滚动到选中文本位置的功能?<htmlstyle='height:100%;'><head><metacharset='UTF-8'/></head><bodystyle='height:100%;padding:0;margin:0;border-width:0;'><divid="cont......
  • 学习selenium
    importrequestsimportbs4fromselenium.webdriver.common.byimportByimportpandasaspddriverPath="C:\ProgramFiles(x86)\Microsoft\Edge\Application\msedgedriver.exe"url='https://so.gushiwen.cn/'url2='gushi/tangsh......
  • RFID技术在人员定位和监控方面相较于其他技术有何明显优势?
    RFID技术在人员定位和监控方面相较于其他技术具有一系列明显优势,具体体现在以下几个方面:首先,RFID技术采用无线电信号进行非接触式识别,无需与目标对象进行物理接触,因此可以在各种环境下进行远距离的自动识别和定位。这使得RFID技术适用于不同领域的应用,如仓库管理、医院、工厂等,为......
  • python自动化——selenium——教程截图笔记复习
      需要现在和浏览器对应的驱动:               123 123......
  • 使用fabric.js框选图片区域定位标注图片内容
    仍然是在图片上特定区域根据数值显示不同的颜色的需求,过了这么久,svg图迟迟提供不了,考虑canvas方案。记录比较下canvas及各canvas框架的使用。canvas<!DOCTYPEhtml><html><head><metacharset="UTF-8"/><title>使用JavaScript在图像上选择区域</title></h......