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自动化测试,定位不到元素的原因及解决方案的更多相关文章

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

    主要讲自己在实战中遇到的坑: 1.动态id定位不到元素 分析原因:每次打开页面,ID都会变化.用ID去找元素,每次刷新页面ID都会发生变化. 解决方案:推荐使用xpath的相对路径方法或者cssSel ...

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

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

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

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

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

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

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

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

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

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

  7. web自动化测试---xpath方式定位页面元素

    在实际应用中,如果存在多个相同元素,包括属性相同时,一般会选用这种方式,当然如果定位属性唯一的话,也是可以使用的,不过这种方式没有像id,tag,name等容易理解,下面讲下xpath定位元素的方法 ...

  8. Python+Selenium - Web自动化测试(二):元素定位

    前言 前面已经把环境搭建好了,现在开始使用 Selenium 中的 Webdriver 框架编写自动化代码脚本,我们常见的在浏览器中的操作都会有相对应的类方法,这些方法需要定位才能操作元素,不同网页的 ...

  9. UI自动化测试(三)对页面中定位到的元素对象做相应操作

    前两天分别讲述了UI自动化测试基础以及对页面元素该如何进行定位,这一篇自然就是对定位到的页面元素对象进行相应操作啦. 阅读目录 1.常用操作元素对象的方法 2.鼠标事件操作 3.键盘事件操作 4.We ...

随机推荐

  1. thinkCMF图片上传选择已上传图片

    1.找到上传图片的模板页面 webuploader.html 在上传文件标签后面 添加 <li class=""><a href="#explorer& ...

  2. PTA 自测-4 Have Fun with Numbers

    #include<iostream> #include<string> #include<cstring> #include<vector> using ...

  3. tensorflow C++接口调用目标检测pb模型代码

    #include <iostream> #include "tensorflow/cc/ops/const_op.h" #include "tensorflo ...

  4. C语言 指针在函数传参中的使用

    int add(int a, int b)   //函数传参的时候使用了int整型数据,本身是数值类型.实际调用该函数时,实参将自己拷贝一份,并将拷贝传递给形参进行运算.实参自己实际是不参与运算的.所 ...

  5. github新手使用教程

    1.首先打开https://github.com/官网 注册一个github账号 2.注册成功之后,登录账号,创建一个属于自己的库 3.创建完成之后,为了方便电脑上的代码上传到github 仓库上,要 ...

  6. mongodb 批量改变某一列类型 比如 String改为double,insert into select 批量插入 批量修改

    //type:2代表String 1.String变Double db.集合.find({"列":{$type:2}}).forEach(function(x){ x.列=pars ...

  7. 解决LoadRunner服务器返回乱码

  8. java 中的小数点、大数、随机数处理

    1.小数点处理 public class Test { public static void main(String[] args) { double i = 3.856; // 舍掉小数取整 Sys ...

  9. mysql命令行操作大全

    Mysql安装目录 数据库目录/var/lib/mysql/配置文件/usr/share/mysql(mysql.server命令及配置文件)相关命令/usr/bin(mysqladmin mysql ...

  10. Perl:只是把“^”作为匹配的单字:只是匹配每一行的开头 $lines =~ s/^/file_4_ex_ch7.txt: /gm;

    Perl:只是把“^”作为匹配的单字:只是匹配每一行的开头                     $lines =~ s/^/file_4_ex_ch7.txt: /gm;