近日工作中遇到一类奇怪的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()
本文介绍了一种特殊div元素的处理方法,该元素在点击前后有不同的style和class,且从只读变为可编辑。文章分享了解决方案,通过使用ActionChains模块和ASCII码实现元素的清空与重新赋值。
8955

被折叠的 条评论
为什么被折叠?



