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(),换个思路总能找到解决办法!
selenium+python自动化99-清空输入框clear()失效问题解决的更多相关文章
- selenium+python自动化98--文件下载弹窗处理(PyKeyboard)
前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...
- selenium+python自动化79-文件下载(SendKeys)
前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...
- selenium+python自动化登录脚本
利用selenium+python写的一个关于登录的自动化脚本
- 【python-excel】Selenium+python自动化之读取Excel数据(xlrd)
Selenium2+python自动化之读取Excel数据(xlrd) 转载地址:http://www.cnblogs.com/lingzeng86/p/6793398.html ·········· ...
- selenium+python自动化102-登录页面滑动解锁(ActionChains)
前言 登录页面会遇到滑动解锁,滑动解锁的目的就是为了防止别人用代码登录(也就是为了防止你自动化登录),有些滑动解锁是需要去拼图这种会难一点. 有些直接拖到最最右侧就可以了,本篇讲下使用 seleniu ...
- selenium+python自动化之元素定位
自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. ...
- selenium+python自动化之操作浏览器
一.打开网站 1.第一步:从selenium里面导入webdriver模块 2.打开Firefox浏览器(Ie和Chrome对应下面的) 3.打开百度网址 二.设置休眠 1.由于打开百度网址后,页面加 ...
- selenium+python自动化78-autoit参数化与批量上传
前言 前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片. 这样每次调用的时候,在命令行里面加一个文件路径的参数就行. 一.命令行参数 ...
- selenium+python自动化77-autoit文件上传
前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...
随机推荐
- 【python库模块】Python subprocess模块功能与常见用法实例详解
前言 这篇文章主要介绍了Python subprocess模块功能与常见用法,结合实例形式详细分析了subprocess模块功能.常用函数相关使用技巧. 参考 1. Python subprocess ...
- mysql8.0 caching_sha2_password的坑
先来解释一下为什么会报这个错,在mysql8之前的版本使用的密码加密规则是mysql_native_password,但是在mysql8则是caching_sha2_password. 解决方案有很多 ...
- 在 Java 中不使用多余变量交换两个字符串
在 Java 中不使用多余变量交换两个字符串 public class Test { public static void main(String[] args) { String a = " ...
- imposm模块安装
imposm安装 pip install imposm 报错,参考:https://imposm.org/docs/imposm/2.5.0/install.html 并安装依赖: sudo ap-g ...
- 对javascript中call()方法的理解
call ( thisObj [, arg1 [, arg2 [, [, argN] ] ] ]) call()方法:官方介绍是,调用一个对象的一个方法,以另一个对象替换当前对象. call()方法 ...
- 题解 CF53E 【Dead Ends】
题意: 给一个n(n<=10)个节点的无向图,图里面有m条边,以这m条边构建生成树,求所有生成树中只含有k个度数为1的点的方案数. 题解: 看见这个数量级就一定会想到状态压缩dp... 那让我们 ...
- springboot+mybatis实现数据库的读写分离
介绍 随着业务的发展,除了拆分业务模块外,数据库的读写分离也是常见的优化手段.方案使用了AbstractRoutingDataSource和mybatis plugin来动态的选择数据源选择这个方案的 ...
- pytest_allure2 生成html报告
前言 allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest,也可以集成到Jenkins上展示高大上的报告界面. 环境准备 ...
- Tr/ee AtCoder - 4433 (构造)
大意: 给定长$n$的字符串$s$, 要求构造一棵树, 满足若第$i$个字符为$1$, 那么可以删一条边, 得到一个大小为$i$的连通块. 若为$0$则表示不存在一条边删去后得到大小为$i$的连通块. ...
- Openstack Sahara组件和架构简介
1.简介 Apache Hadoop是目前被广泛使用的主流大数据处理计算框架,Sahara项目旨在使用用户能够在Openstack平台上便于创建和管理Hadoop以及其他计算框架集群,实现类似AWS的 ...