在做自动化过程中会遇到各种各样的奇葩问题,遇到这种问题不要着急,仔细想下操作过程看看是否有其他的办法解决。今天介绍大家经常遇到的问题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失效的问题,当然如果你有更好的解决方法,可以进行下方留言,共同学习
|
|