zoukankan      html  css  js  c++  java
  • 关于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等显示等待设置等待时间后再进行元素的定位

  • 相关阅读:
    一些坑爹的错误
    鼠标键盘钩子捕获(初版)
    【Win10】我们无法更新系统保留的分区
    实验一:c++简单程序设计(1)
    《Java 8 in Action》Chapter 1:为什么要关心Java 8
    《Java 8 in Action》Chapter 2:通过行为参数化传递代码
    Java集合类综合
    Java内存模型
    你真的会阅读Java的异常信息吗?
    Java常用异常整理
  • 原文地址:https://www.cnblogs.com/oscarforever/p/11573943.html
Copyright © 2011-2022 走看看