zoukankan      html  css  js  c++  java
  • selenium---解决clear方法失效

      在做自动化过程中会遇到各种各样的奇葩问题,遇到这种问题不要着急,仔细想下操作过程看看是否有其他的办法解决。今天介绍大家经常遇到的问题clear方法失效

    clear方法失效

    所谓的clear的方法失效比如:明明已经定位到了输入框,输入内容,使用了clear操作方法,但是没有生效,内容还在。这个时候就要尝试下如何使用其他的方法进行操作了。

    理清思路:

    我们先想象下如果,键盘上的删除键坏掉了,你输入了内容如何进行删除呢,如何借助selenium来清除呢?(这里clear已经不能用了)

    1、全选然后进行重新输入内容

    2、刷新页面,重新输入内容

    3、通过js语法强制清除,重新输入内容

    4、双击进行选中输入内容

    先想到了这几种方法,我们就通过这几种方法进行用代码进行实现

    全选并重新输入

    在selenium中选中肯定需要运行用到键盘操作了,使用键盘操作需要导入库 from selenium.webdriver.common.keys import Keys 然后在选中需要选中的输入框,输入“ctrl+a”进行实现,这里我们拿百度进行实战

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import time
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    driver.find_element_by_id('kw').send_keys('测试-安静')
    # 导入“ctrl + a”全选。
    driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a')
    time.sleep(2)
    # 重新输入
    driver.find_element_by_id('kw').send_keys('请关注测试安静公众号!')

    刷新页面,重新输入内容

    首先提一点,这个在一些场景下可能比较麻烦,因为比如在操作输入框之前已经在这个页面进行了其他的输入或者其他的操作,那么这个时候在刷新浏览器就会导致其他的操作也没了,需要重新操作,比较费时,但是也是不错的结局方法

    from selenium import webdriver
    import time
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    driver.find_element_by_id('kw').send_keys('测试-安静')
    # 刷新页面
    driver.refresh()
    time.sleep(2)
    # 重新输入
    driver.find_element_by_id('kw').send_keys('请关注测试安静公众号!')

    js语法强制清除,重新输入内容

    js脚本虽然测试时候用的比较少,但是用到的时候就是帮助我们解决问题的时候。

    from selenium import webdriver
    import time
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    driver.find_element_by_id('kw').send_keys('测试-安静')
    time.sleep(1)
    # 通过js语法强制清除
    js = 'document.querySelector("#kw").value="";'
    driver.execute_script(js)
    time.sleep(2)
    # 重新输入
    driver.find_element_by_id('kw').send_keys('请关注测试安静公众号!')

    双击进行选中输入内容

    通过双击选中输入内容,这个有一些场景也不适用,比如中间有标点符号,或者说有一些双击未能选中的词语,说道双击,就要引入鼠标方法 from selenium.webdriver.common.action_chains import ActionChains 

    from selenium import webdriver
    import time
    from selenium.webdriver.common.action_chains import ActionChains
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    driver.find_element_by_id('kw').send_keys('测试-安静')
    time.sleep(1)
    element = driver.find_element_by_id('kw')
    # 进行双击
    ActionChains(driver).double_click(element).perform()
    time.sleep(2)
    # 重新输入
    driver.find_element_by_id('kw').send_keys('请关注测试安静公众号!')

    通过安静执行的代码动图可以发现,双击后,选定了一个词,但是没有全部选中。所以这种方法可能需要在特定的场景下进行使用了。

    安静通过小的几个例子解决了clear失效的问题,当然如果你有更好的解决方法,可以进行下方留言,共同学习

  • 相关阅读:
    【Hadoop 分布式部署 五:分布式部署之分发、基本测试及监控】
    【Hadoop 分布式部署 四:配置Hadoop 2.x 中主节点(NN和RM)到从节点的SSH无密码登录】
    【Hadoop 分布式部署 三:基于Hadoop 2.x 伪分布式部署进行修改配置文件】
    【Hadoop 分布式部署 二:分布式环境预备工作(主机名 IP地址等设置)】
    【Hadoop 分布式部署 一 :分布式部署准备虚拟机 】
    Java基础 【类之间的关系】
    Java基础 【自动装箱和拆箱、面试题】
    java算法 第七届 蓝桥杯B组(题+答案) 3.凑算式
    java算法 第七届 蓝桥杯B组(题+答案) 2.生日蜡烛
    java算法 第七届 蓝桥杯B组(题+答案) 1.煤球数目
  • 原文地址:https://www.cnblogs.com/qican/p/14201351.html
Copyright © 2011-2022 走看看