谈谈selenium中的clear后输入内容异常的处理

这篇具有很好参考价值的文章主要介绍了谈谈selenium中的clear后输入内容异常的处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

谈谈selenium中的clear后输入内容异常的处理

案例

  • 项目的登录:http://124.223.31.21:9097/#/ ; 可能会无法访问,了解下这个情况的处理即可

selenium clear()出现元素不可见,Selenium杂记,selenium,测试工具

  • 代码

    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get('http://124.223.31.21:9097/#/')
    driver.find_element('id', 'formLabelAlign.username').send_keys('20154084')
    driver.find_element('id', 'formLabelAlign.password').send_keys('123456')
    driver.find_element('css selector', '.submit>button').click()
    
  • 你会发现无法登录,道理很简单

  • 你输入的密码追加过去了,send_keys如果之前有内容,是会保留的,追加你输入的内容。

selenium clear()出现元素不可见,Selenium杂记,selenium,测试工具

  • 你可能会这样处理,在密码元素上先清空之前的内容(clear),然后再去输入

    driver.find_element('id', 'formLabelAlign.username').send_keys('20154084')
    driver.find_element('id', 'formLabelAlign.password').clear()
    driver.find_element('id', 'formLabelAlign.password').send_keys('123456')
    
  • 一个奇怪的现象发生了,你是清空了之前的内容,但你输入的是12345,6没了!

selenium clear()出现元素不可见,Selenium杂记,selenium,测试工具

  • 屡试不爽
  • 但如果输入12345678,或者helloworld,却又是可以的,我反正是解释不了
  • 当然这不是我们的重点。
  • 实际工作中我也遇到过,有同学也遇到过类似的情况
  • 我们可以用其他等价的手段来替代这个清空后输入的行为

解决方法一:键盘操作

  • 在密码上按CTRL+A,再输入

  • 示例代码文章来源地址https://www.toymoban.com/news/detail-789073.html

    driver.find_element('id', 'formLabelAlign.password').send_keys(Keys.CONTROL,'A')
    driver.find_element('id', 'formLabelAlign.password').send_keys('123456')
    driver.find_element('css selector', '.submit>button').click()
    
  • 从运行的效果看,是全选了,但依然输入的是12345(至此我非常怀疑是send_keys的问题)

解决方法二:鼠标操作

  • 在元素上双击(相当于是全选的操作)

  • 然后再输入

  • 示例代码

    ele_password  = driver.find_element('id', 'formLabelAlign.password')
    ActionChains(driver).double_click(ele_password).send_keys('123456').perform()
    
  • 效果OK

  • 这样也是ok的

    ele_password  = driver.find_element('id', 'formLabelAlign.password')
    ActionChains(driver).double_click(ele_password).send_keys_to_element(ele_password,'123456').perform()
    

  • 对于这个case,既然怀疑是send_keys的问题,那我们完全可以用其他方式来输入内容

  • 比如这样

    ele_password  = driver.find_element('id', 'formLabelAlign.password')
    ele_password.clear()
    ActionChains(driver).send_keys_to_element(ele_password,'123456').perform()
    
  • 即保留了clear,但用其他方式来输入内容

解决方法三:第三方库来输入

  • 可以键盘输入的库就多了

  • 比如pyautogui

  • 示例代码

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get('http://124.223.31.21:9097/#/')
    driver.find_element('id', 'formLabelAlign.username').send_keys('20154084')
    ele_password  = driver.find_element('id', 'formLabelAlign.password')
    ele_password.clear()
    import pyautogui
    pyautogui.typewrite('123456')
    driver.find_element('css selector', '.submit>button').click()
    
  • 的确搞定了

  • 但有点奇怪的是

  • 我加了sleep,并没有看到在密码框中有输入123456


  • 画蛇添足

    ele_password.clear()
    ele_password.click()
    import pyautogui
    pyautogui.typewrite('123456')
    
  • click的效果是有的,但是,又只输入了12345

  • 至此有点懵,不是send_keys的原因?还是说send_keys跟typewrite有一样的问题?

解决方法四:js操作

  • js操作就比较丝滑,因为它可以对一个元素的value进行赋值,不存在什么clear

  • 示例代码

    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get('http://124.223.31.21:9097/#/')
    driver.find_element('id', 'formLabelAlign.username').send_keys('20154084')
    js = "document.querySelector('[placeholder=请输入密码]').value='123456'"
    driver.execute_script(js)
    driver.find_element('css selector', '.submit>button').click()
    

说在最后

  • 方法其实很多,你要思考的是如何模拟这个操作
  • 上面的未必能解决你的问题,你需要根据实际情况去探索

到了这里,关于谈谈selenium中的clear后输入内容异常的处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python】【Selenium】如何给Input框输入带格式内容

    用selenium写自动化脚本过程中涉及向输入框自动传输内容。而且有时内容很多,如何保持段落分行呢? 第一步先通过xpath定位input元素,然后用send_keys方法发送字符串内容。 如果字符串内容是带分行的多段,有一个比较方便的方法保留分行而不用插各类换行转义符。将整段内

    2024年02月11日
    浏览(27)
  • selenium clear()无效的解决办法

    做自动化时,在往输入框中send_keys前往往需要先清空一下这个输入框里的内容,避免输入框原本有内容或默认值,导致最终输入的结果不是预期的内容。 清空内容我们一般会用clear()方法 但用久了你就会发现clear()并非对所有的输入框都好用,即使它是一个input元素。 产生这个

    2024年02月03日
    浏览(27)
  • selenium的clear()失效的问题

    在我绑定一个ID后,输入第一个数据,clear()清空后,在输入第二个,但是clear始终失效。 在百般查询后,看到这个博客 如果元素定位到了,但是clear没有效果,根本原因是:存在镜像节点. 操作clear()清掉数据后, 镜像节点的数据还在,所以数据会补充回去 觉得很有道理,应该

    2023年04月18日
    浏览(21)
  • uniapp小程序,部分 ios 真机测试出现 input 输入框内容 跳动 问题

    前言 :最近在写uniapp小程序,遇到一个问题,在此记录一下,也希望能帮助到一些小伙伴。 问题 :表单输入的时候,在个别 ios 真机上面测试时,快速输入和快速删除,会发现输入的文字或者数字,有自动删除、闪动、来回跳动等现象,经过查询各种资料,以及咨询官方得

    2024年02月11日
    浏览(35)
  • python通过selenium获取输入框的文本值爬取编辑框内容

    以百度首页的输入框为例,当输入‘你好‘后,html中的value的值会变成‘你好’ 运行代码得到以下效果

    2024年02月04日
    浏览(41)
  • selenium常见异常以及处理方法

    python常见异常以及处理方法 . . 一、 TypeError: ‘module’ object is not callable 二、“chromedriver” executable needs to be in path 三、selenium 点击元素报错 ElementClick 四、selenium 使用 clear 无法清除文本框内容 WEB自动化_键盘事件 五、下拉框是 input 封装的,无法操作 WEB自动化_文件上传(in

    2023年04月08日
    浏览(21)
  • unity的C#学习——预处理指令、异常处理和文件的输入输出

    C# 中的预处理器指令是用来 指示编译器在 编译代码之前 执行一些预处理操作 的特殊指令。预处理器指令以 井号 # 开始,并且必须出现在代码的最外层,不能包含在方法或类的内部。 #define 指令用于定义一个符号常量。符号常量可以在代码中使用 #if 或 #elif 指令进行条件编

    2024年03月22日
    浏览(28)
  • 【异常处理】Word2016 出现“此功能看似已中断 并需要修复

    刚刚安装并激活了office2016, 每次打开Word文档都会提示 “很抱歉,此功能看似已中断,并需要修复,请使用Windows 控制面板中的“程序和功能”选项修复Microsoft Office”。 亲测使用控制面板的办法无效 ,下面是网络上查到的解决办法 解决方法: 1. 按Windows 键+R键,输入“reg

    2024年02月11日
    浏览(35)
  • selenium获取html元素中的文本内容

    方法1: .text 直接定位元素 直接使用xpath路径定位元素,最后使用 .text 获取元素中文本 注意!!: 此时text_translation取.text 之前 类型为WebElement 方法2: text() 使用etree.HTML (提前导入模块from lxml import etree) etree.HTML先解析当前页面资源,再路径定位元素时,路径最后 添加 /text(

    2024年02月16日
    浏览(32)
  • 软件测试|如何使用selenium处理iframe富文本输入框

    简介 在网页开发中,富文本框是常见的元素,用于输入富文本内容,如富文本编辑器或邮件编辑器。如果我们要使用Python和Selenium进行自动化测试或操作这种富文本框,可能会遇到一些挑战。本文将详细介绍如何使用Python和Selenium来向iframe富文本框输入内容,并提供示例代码

    2024年01月20日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包