关于selenium自动化元素定位问题解决的几种方法

遇到了元素定位问题和定位到后无法执行点击操作等,闲话少说,直奔主题:

1.元素定位不到一般有如下3种情况,大家如果遇到了可以对号入座哈

a.查找的元素不在当前窗口中

解决方法:使用driver.switch_to.window()进行窗口的切换,一般在多个窗口时,使用切换到最后一个窗口就可以了

首先获取到当前所有的窗口 all_win = driver.window_handles

然后切换到最后一个窗口即可 driver.switch_to.window(all_win[-1]) 或 driver.switch_to.window(driver.window_handles[-1])

注:一般新打开的窗口都是最后一个,直接用[-1]下标即可,获取当前窗口句柄用driver.getWindowHandle()

b.当前元素不在当前页面,而是在frame或Iframe框架中

解决方法:首先查看元页面,查看是否有frame或iframe标签,也可以直接编码使用 frame_names = find_elements_by_tag_name('iframe') 或 (‘frame’)进行元素查找,并放到frame_names列表变量中

然后使用 driver.switch_to.frame(frame_names[0]) 切换到 第一个frame 框架中,根据 frame_names的长度,索此由0开始,到len(frame_names)-1个frame,如果切换到最后一个frame直接使用rame_names[-1]下标即可

此时再用 driver.find_element_by_xxx方法定位元素就可以定位到了。

注:在多层嵌到的iframe中可以使用 driver.switch_to.parent_frame() 切换到上一层iframe,也可以用driver.switch_to.default_content()切换到主页面中

c.页面加载慢,还没有加载完成就对元素进行定位

解决方法:使用sleep或webdriverwait等显示等待设置等待时间后再进行元素的定位

原文地址:https://www.cnblogs.com/oscarforever/p/11573943.html