使用selenium做网页自动化,经常会遇到各种各样定位不到数据问题。今天根据亲身经历介绍2个定位不到元素问题的解决方法
1. 悬浮窗内按钮
鼠标移动到悬浮窗部分才能够显示操作按钮,这种控件直接找必然是找不到的
解决方法:
1. 增加一步鼠标操作:将鼠标移动到所需要定位元素的位置,悬停之后,再找元素
关键词:ActionChains,鼠标操作对应的方法集合,详细内容可以在selenium介绍文档中找~
推荐博文:https://blog.csdn.net/weixin_36279318/article/details/79475388 【转载】
from selenium.webdriver import ActionChains
test = driver.find_element_by_id('GGGG') # 控件所在元素位置
ActionChains(driver).move_to_element(test).perform() # 将鼠标移动待元素上
并且在测试的过程中,鼠标放一边别乱动了~~乱动了就可能定位不到了~
2. 动态弹窗
这种并不是iframe格式,打开开发工具可以看到,他的代码在整个h5中的最下方,好理解就叫他动态弹窗。动态的内容,使用Xpath的方式获取就不太明智了,需要修改使用class、ID等固定内容获取,精确性更好。
但是class和ID就可能存在相似的情况。所以需要查看到底有多个“同名”元素,然后看使用的是哪一个。
Choose_Operates = driver.find_elements_by_class_name('el-popper') # 定位所有同名元素
Operates = Choose_Operates[-1].find_elements_by_tag_name('li') # 使用需要的元素进行后续操作
Operates[2].click()
总结:
定位元素慢慢来,找不到也不奇怪。iframe和弹窗,定位之前先跳转。
动态元素用id/class,不变元素用Xpath。鼠标操作灵活用,实在找不到就用try。
都看到和了,不点赞评论,不觉得对不起自己么?