近日工作中遇到一类奇怪的div,主要特点就是未点击前和点击后有不同的style和class,并且点击前是只读,点击后可以设置文本值。类似下面这个:
获取这个元素进行点击和自动键入值都行,这时候问题来了,在我在获取这个元素前它是有值的,需要重新键入值,而重新赋值前就需要clear清空它。思路是这样,具体操作下来会报错:
报错大致是这个元素是一个不可编辑的元素。增加值没报错清空值就报错。
后面想了想,既然clear不能用,那我控制键盘的DELETE键来删除呢?
结果很现实,还是报错。
由于工作问题,暂时将问题在此记录。
经过一段时间网上各种查询结果及亲身实践,最终解决。首先是引入模块ActionChains,也就是模拟鼠标操作的一个模块。上面的问题是元素点击前后不同了,那么我就给它一步到位,点击、清空、赋值一次完成。
后来操作了ActioChains,发现这个模块没有clear(),于是又是一番查找,发现可以通过ASCII码来进行删除,最终解决。
具体:
# chr(127)*10 删除长度10
# \是代码换行
ActionChains(driver).move_to_element(ele).click().send_keys(chr(127)*10)\
.send_keys('值').perform()