python清空文本框内容_selenium+python自动化99-清空输入框clear()失效问题解决

前言

在使用selenium做UI自动化的时候,发现有些弹出窗上的输入框,输入文本后,使用clear()方法无效。

这样会导致再次输入时,字符串不是清空后输入,而是跟着后面输入一长串,导致结果不准。

经过几次尝试,先click()点击该输入框,再输入,发现还是无效,最终有以下2种方法可以解决

使用双击输入框后,全选文本再输入就可以了

使用js清空输入框文本

问题描述

在有些弹出的页面上,输入框输入文本,是可以正常输入的,比如我第一次输入测试数据:yoyo

第二次,我想换个测试数据,先clear,再输入文本:悠悠

结果清空文本框无效,两次输入的字符串是累加的

方法1:双击输入框

先封装双击元素方法写到base.py文件

from selenium.webdriver.support.ui import WebDriverWait

from selenium import webdriver

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.action_chains import ActionChains

from selenium.webdriver.support.select import Select

import time

class Base():

# # 作者:上海悠悠,QQ交流群:750815713

def __init__(self, driver):

self.driver = driver

def find(self, locator):

'''查找元素,loctor = ("id", "kw")'''

element = WebDriverWait(self.driver, 30, 1).until(EC.presence_of_element_located(locator))

return element

def click(self, locator):

'''点击元素'''

self.find(locator).click()

def double_click(self,locator):

'''双击事件'''

element = self.find(locator)

ActionChains(self.driver).double_click(element).perform()

def send(self, locator, text):

'''发送文本'''

self.find(locator).send_keys(text)

运行代码

# 作者:上海悠悠,QQ交流群:750815713

driver = webdriver.Firefox()

driver.get("https://www.baidu.com")

baidu = Base(driver)

# 输入框

loc = ("id", "kw")

baidu.send(loc, "yoyo")

time.sleep(3)

# 方法一:双击

baidu.double_click(loc)

# 重新输入

baidu.send(loc, "上海-悠悠")

双击之后,不用清空,重新输入就可以了

方法2:JS清空文本框

第二种解决思路,可以用万能的js,只要selenium遇到的坑,都可以用js去解决。

# 作者:上海悠悠,QQ交流群:750815713

driver = webdriver.Firefox()

driver.get("https://www.baidu.com")

baidu = Base(driver)

# 输入框

loc = ("id", "kw")

baidu.send(loc, "yoyo")

time.sleep(3)

# # 方法一:双击

# baidu.double_click(loc)

# # 重新输入

# baidu.send(loc, "上海-悠悠")

# 方法二:万能的js

js = 'document.querySelector("#kw").value="";'

driver.execute_script(js)

baidu.send(loc, "上海-悠悠")

方法总比问题多,遇到问题,别总去解决为什么不能clear(),换个思路总能找到解决办法!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值