首页 > 其他分享 >selenium——clear()使用了不生效,解决输入框没法清空的情况

selenium——clear()使用了不生效,解决输入框没法清空的情况

时间:2023-10-12 14:24:04浏览次数:32  
标签:clear selenium ele 输入框 清空 div js

前提:

今天研究web自动化,准备模拟一个修改名称的操作,想的是定位都输入框元素,然后使用clear()方法清空输入框内容,再重新输入一些内容

结果实际上发现并没有清空输入框内容,而是直接在输入框后面追加了(这里就可以确定元素肯定是定位到了的)

clear()方法为什么会失效不得而知,在网上搜索了一大圈也没看到有人解释说为什么会没起作用(好想知道为什么不起作用……)

解决办法:

总得来说有三个解决思路

一:双击输入框,然后重新输入内容(最笨,因为基本上双击选中不了全部内容)

需要导入 from selenium.webdriver import ActionChains

二:通过键盘全选,即模拟发起ctrl+a,然后重新输入内容(推荐)

需要导入 from selenium.webdriver.common.keys import Keys

三:通过万能的js直接定位到元素然后将元素的value值清空(需要了解一定的js语法,如果要做好web自动化,js多少也需要掌握点)

下面是以上三种方法的代码实现

ele = driver.find_element_by_xpath('//*[@id="data-assets-modules"]/div[3]/div/div[2]/form/div/div/div/input')
# 方法一:双击输入框,再输入新的内容
ActionChains(driver).double_click(ele).perform()
ele.send_keys('尝试双击修改')
# 方法二:通过键盘全选,然后直接输入新的内容,就不用clear了
ele.send_keys(Keys.CONTROL, 'a')
ele.send_keys('通过键盘全选达到清空效果')
# 方法三:万能的js
# 这种execute_script()的用法还需要学习
driver.execute_script("arguments[0].value = '';", ele)
# 也可以通过css选择器选取元素再把value清空
driver.execute_script('document.querySelector("#data-assets-modules > div:nth-child(3) > div > div.el-dialog__body > form > div > div > div > input").value=""')
ele.send_keys('通过js清空输入框')

实际试验以后,除了第一种达不到预期效果,后面两种都能达到预期效果

还是留个疑问:什么情况下clear()会失效不起作用呢?

我所定位的input元素本身也没啥特殊的,对比了其他clear()能生效的input元素也实在没看出有啥不一样的地方


————————————————
版权声明:本文为CSDN博主「sun_977759」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sun_977759/article/details/108731881

标签:clear,selenium,ele,输入框,清空,div,js
From: https://www.cnblogs.com/Im-Victor/p/17759356.html

相关文章

  • Selenium打开网页时保持登陆状态
    前言今天在学习selenium的时候,每次调试网页都会打开一个新的浏览器窗口,当我想要做某些操作的时候就需要自己再去模拟登陆,太浪费时间了。那么要怎么样才能在打开网页的时候直接就是登陆状态呢?使用下面的方法就可以直接加载登陆过后的保存在本地的信息,而且不再需要手动登陆上代......
  • selenium系列:三(配置)
    ChromeOptionsChromeOptionsoptions=newChromeOptions();setPageLoadStrategy等待策略options.setPageLoadStrategy(PageLoadStrategy.NORMAL);PageLoadStrategy.NORMAL正常情况下,selenium会等待整个界面加载完成(指对html和子资源的下载与解析,入JS文件,图片等,不包含ajax)PageLo......
  • selenium所有检测点和绕过方式[运行命令后被检测/打开就被检测/环境检测]
    网上说的基本不全,最近有个新加密(F5shape)是控制流加密,解起来比较繁琐,就直接用selenium了,我看到有环境监测,但是没想到有检测selenium…一开始用nodejs写的,但是用nodejs写面向过程的代码真的很难受,又改为python了JSVMPjs加密打开这个网站就能看到部分检测点https://bo......
  • Python自动化测试工具Selenium使用踩坑
    1.背景       最近看同事在搞自动化测试,便想着自己在本地搭建一个自动化点击页面环境。主要是Selenium操作谷歌游览器进行访问百度,然后搜索关键词,获取搜索的内容。2.环境准备(1)查看本地谷歌游览器版本号,点击游览器右上角->设置-关于chrome即可获取,目前我的游览器是最新......
  • Python selenium chrome版本查询和对应驱动下载
    elenium爬虫需要安装Chrome驱动chrome版本查询和对应驱动下载,超详细方法/步骤1查看谷歌的版本,第一步在地址栏输入图中网址第二步查看版本号2复制版本号,只需复制版本号最后一位小数点之前的数字。(例:版本号:111.0.5563.65,复制111.0.5563即可)将复制的版本号......
  • selenium 点击 弹窗中的确认和取消按钮
    html效果 当点击弹窗上的确认按钮后 <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>弹窗示例</title><style>body{text-align:center;padding-top:50px;}</style></head><body><h1......
  • selenium
    selenium一、前期准备1、概述selenium本身是一个自动化测试工具。它可以让python代码调用浏览器。并获取到浏览器中加载的各种资源。我们可以利用selenium提供的各项功能。帮助我们完成数据的抓取。2、学习目标掌握selenium发送请求,加载网页的方法掌握selenium简单的元......
  • Selenium借助AutoIt完成文件的上传与下载
    文件上传1,编辑首先提前下载好AutoIT,先了解https://blog.csdn.net/weixin_39218743/article/details/87808776手上没有带上传文件的网址,先用百度的上传照片吧!打开AutoIT工具组件中的脚本编辑器sciTEScriptEditorWinWaitActive("打开")Send('D:\img\11.jpg')Sleep(2000)Send("{......
  • 总结selenium 中 js 更改隐藏属性
    第一种多个元素被隐藏时通过js修改对比照片这个是没隐藏的 对比照片 这个是隐藏的 driver=webdriver.Chrome()#urlurl=r"http://127.0.0.1:5000/"driver.get(url)print("已打开网页")#执行js脚本,将元素的display属性设置为block,......
  • 密码输入框小眼睛的实现
    input先回顾一下input标签常用的属性常用属性name:input元素的名字,用于对提交到服务器后的表单数据进行标识placeholder:默认显示文字,一般用来提示用户输入,输入后会被覆盖disabled:禁用checked:选中value:元素的值,,此初始值可以更改,并且在提交表单时,value属性的值会发送给服务器......