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等显示等待设置等待时间后再进行元素的定位

  • 相关阅读:
    小数据池,bytes
    不会的知识总结:
    nginx低版本不支持pathinfo模式,thinkphp针对此问题的解决办法
    备份了一个nginx的虚拟主机配置文件报错
    centos修改ssh端口
    CentOS安装配置Git服务器(gitosis)
    干货CentOS6.5_Nginx1.40_Php5.57_MySQL5.5.35编译安装全记录
    编译升级php
    php源代码安装常见错误与解决办法分享
    兼容IE,Firefox,Opera等浏览器的添加到收藏夹js代码实现
  • 原文地址:https://www.cnblogs.com/oscarforever/p/11573943.html
Copyright © 2011-2022 走看看