主要讲自己在实战中遇到的坑:

1.动态id定位不到元素

分析原因:每次打开页面,ID都会变化。用ID去找元素,每次刷新页面ID都会发生变化。

解决方案:推荐使用xpath的相对路径方法或者cssSelector查找到该元素。
      

2.iframe原因定位不到元素

分析原因:你要找的元素在某个框架(frame)里面

解决方案:跳转到该框架里,再查找元素。

     driver.switchTo().frame("login_frame");

     driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[frameborder='0']")));

     driver.switchTo().frame(driver.findElement(By.tagName("iframe"));

3.要返回到某frame外找元素

分析原因:当你进入某个框架,找到某元素。接下来又想找一个框架外的元素的时候,需要跳出该框架再找元素。

解决方案:执行下面这句代码,pareneFrame是父类,从当前框架跳转到父类的框架里。

      driver.switchTo().parentFrame();

4.不在同一个frame里边查找元素

分析原因:页面左边一栏属于left_frame,右侧属于right_frame的情况,此时如果当前处在left_frame,就无法通过id定位到right_frame的元素

解决方案:通过以下语句切换到默认的content:

      driver.switchTo().defaultContent();

5. xpath描述错误
分析原因:描述路径的时候没有按照xpath的规则来写 造成找不到元素的情况出现

解决方案:修改路径写法,或者用其他方式,个人最推荐css。

    

6.页面元素未加载完
分析原因:在找元素前,页面还没加载好,所以那些元素都不存在。

解决方案:等待时间。有三种方式(强制等待,隐式等待,智能等待)

     Thread.sleep(5000); //强制等待5000毫秒

7.元素隐藏起来了

分析原因:窗口在不是最大化的情况下,前端页面元素只会显示局部,所以找不到啊。

解决方案:在找元素前,执行一句,浏览器最大化窗口,这样隐藏的元素就会全部出现了。最好写在beforetest里。

        driver.manage().window().maximize();

8.firefox安全性强,不允许跨域调用出现报错

分析原因:它的错误描述为uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLDocument.execCommand]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location:

解决方案:Firefox 要取消XMLHttpRequest的跨域限制。

     第一是从 about:config 里设置

     signed.applets.codebase_principal_support = true; (地址栏输入about:config 即可进行firefox设置)
     第二就是在open的代码函数前加入类似如下的代码:

     try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } catch (e) { alert("Permission UniversalBrowserRead denied."); }

web自动化测试,定位不到元素的原因及解决方案(持续更新中2018年9月29日)的更多相关文章

  1. 转-web自动化测试,定位不到元素的原因及解决方案

    1.动态id定位不到元素 分析原因:每次打开页面,ID都会变化.用ID去找元素,每次刷新页面ID都会发生变化. 解决方案:推荐使用xpath的相对路径方法或者cssSelector查找到该元素. 2. ...

  2. java自动化测试开发环境搭建(更新至2018年10月8日 11:42:15)

    1.安装JDK的1.8版本 官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151 ...

  3. Python3 Selenium定位不到元素常见原因及解决办法

    Python3 Selenium定位不到元素常见原因及解决办法 一.问题描述 在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况: 报错信息: no such e ...

  4. 软件WEB自动化测试工具之智能元素定位

    江湖一直有着这么一句名言“天下武功,唯快不破".那么在软件测试领域,自然而然我们会想到软件自动化测试.软件自动化测试的实现自然离不开软件自动化测试工具.软件自动化测试工具是软件自动化的载体, ...

  5. Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)

         在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException ...

  6. Selenium2(webdriver)_定位不到元素常见原因及解决办法

    在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况,一般可以从以下几个方面着手解决: 1.Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理 ...

  7. spring web 脚手架 (持续更新中...)

    spring web 脚手架 项目地址: https://github.com/MengW9/scafflod.git 还有觉得哪些可以加上去的配置,欢迎各位拍砖,我会持续更新,大家共同进步 一个通用 ...

  8. Python+selenium定位不到元素的问题及解决方案

    在操作过程中主要遇到两种阻塞的问题,总结如下: 1.页面中有iframe,定位元素时,需要用switch_to.frame()转换到元素所在的frame上再去定位 2.遇到一种新情况,有些按钮在htm ...

  9. web app遇到的一些坑及小技能(持续更新...)

    遇到的一些坑 问题:手机端 click 事件会有大约 300ms 的延迟 原因:手机端事件 touchstart --\> touchmove --> touchend or touchc ...

随机推荐

  1. Last_IO_Errno: 1032

    (一):更新找不到记录 1032   Last_SQL_Errno: 1032                Last_SQL_Error: Could not execute Update_rows ...

  2. POJ-2503 Babelfish---map或者hash

    题目链接: https://vjudge.net/problem/POJ-2503 题目大意: 就像查找一本字典,根据输入的条目和要查询的单词,给出查询结果(每个单词长度不超过10) 解题思路: ma ...

  3. 软件架构中的SOA架构有哪些特点?

    面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互. SOA是一 ...

  4. Spring Security 实现手机验证码登录

    思路:参考用户名密码登录过滤器链,重写认证和授权 示例如下(该篇示例以精简为主,演示主要实现功能,全面完整版会在以后的博文中发出): 由于涉及内容较多,建议先复制到本地工程中,然后在细细研究. 1. ...

  5. CPP-STL:用vector保存对象时保存指针的优点, 以及reserve的使用(转)

    代码1 #include <vector> #include <stdio.h> class A { public: A() { printf("A()/n" ...

  6. android 圆角图片的实现形式

    android 圆角图片的实现形式,包括用第三方.也有系统的.比如makeramen:roundedimageview,系统的cardview , glide .fresco . compile 'c ...

  7. Vue源码学习三 ———— Vue构造函数包装

    Vue源码学习二 是对Vue的原型对象的包装,最后从Vue的出生文件导出了 Vue这个构造函数 来到 src/core/index.js 代码是: import Vue from './instanc ...

  8. H5新增的Web Storage本地存储

    html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage. sessionStorage用于本地存储一个会话(session)中的数据,这些数据只 ...

  9. 提高篇(1):RMQ问题与ST表

    RMQ是英文Range Minimum/Maximum Query的缩写,是询问某个区间内的最值,这里讲一种解法:ST算法 ST算法通常用在要多次(10^6级别)询问区间最值的问题中,相比于线段树,它 ...

  10. lintcode_114_不同的路径

    不同的路径   描述 笔记 数据 评测 有一个机器人的位于一个 m × n 个网格左上角. 机器人每一时刻只能向下或者向右移动一步.机器人试图达到网格的右下角. 问有多少条不同的路径? 注意事项 n和 ...