web自动化测试,定位不到元素的原因及解决方案(持续更新中2018年9月29日)
主要讲自己在实战中遇到的坑:
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日)的更多相关文章
- 转-web自动化测试,定位不到元素的原因及解决方案
1.动态id定位不到元素 分析原因:每次打开页面,ID都会变化.用ID去找元素,每次刷新页面ID都会发生变化. 解决方案:推荐使用xpath的相对路径方法或者cssSelector查找到该元素. 2. ...
- java自动化测试开发环境搭建(更新至2018年10月8日 11:42:15)
1.安装JDK的1.8版本 官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151 ...
- Python3 Selenium定位不到元素常见原因及解决办法
Python3 Selenium定位不到元素常见原因及解决办法 一.问题描述 在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况: 报错信息: no such e ...
- 软件WEB自动化测试工具之智能元素定位
江湖一直有着这么一句名言“天下武功,唯快不破".那么在软件测试领域,自然而然我们会想到软件自动化测试.软件自动化测试的实现自然离不开软件自动化测试工具.软件自动化测试工具是软件自动化的载体, ...
- Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)
在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException ...
- Selenium2(webdriver)_定位不到元素常见原因及解决办法
在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况,一般可以从以下几个方面着手解决: 1.Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理 ...
- spring web 脚手架 (持续更新中...)
spring web 脚手架 项目地址: https://github.com/MengW9/scafflod.git 还有觉得哪些可以加上去的配置,欢迎各位拍砖,我会持续更新,大家共同进步 一个通用 ...
- Python+selenium定位不到元素的问题及解决方案
在操作过程中主要遇到两种阻塞的问题,总结如下: 1.页面中有iframe,定位元素时,需要用switch_to.frame()转换到元素所在的frame上再去定位 2.遇到一种新情况,有些按钮在htm ...
- web app遇到的一些坑及小技能(持续更新...)
遇到的一些坑 问题:手机端 click 事件会有大约 300ms 的延迟 原因:手机端事件 touchstart --\> touchmove --> touchend or touchc ...
随机推荐
- jQuery获取Select选择的Text和Value[转载]
语法解释:1. $("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发2. var ch ...
- IOS 纯代码添加 Button Image Label 添加到自定义View中
@interface ViewController () /**获取.plist数据*/ @property (nonatomic,strong) NSArray *apps; @end @imple ...
- framework7 1.3.5 路由跳转后DOM失效问题
再这个版本的7会存在一个问题,那就是loadpage到指定页面后才做其中的DOM比如DIV里面的text或者HTML,虽然控制台会显示改变后的值但是页面上却还是原值,这时候需要改变方法使用reload ...
- 使用ssl模块配置同时支持http和https并存
博客已经迁移,请访问: https://www.helingfeng.com
- ADO.NET之一:连接层
ADO.NET大部分由System.Data.dll核心程序集来表示. ADO.NET类库有三种完全不听的方式来实现数据访问:连接式.断开式和通过Entity框架.连接式就是会一直占用网络资源,断开式 ...
- ReactiveCocoa实战: 模仿 "花瓣",重写 LeanCloud Rest Api的iOS REST Client.
这一次我们将要讨论的是移动开发中比较重要的一环--网络请求的封装.鉴于个人经验有限,本文将在一定程度上参考 基于AFNetworking2.0和ReactiveCocoa2.1的iOS REST Cl ...
- 洛谷P1437 [HNOI2004]敲砖块(dp)
题目背景 无 题目描述 在一个凹槽中放置了 n 层砖块.最上面的一层有n 块砖,从上到下每层依次减少一块砖.每块砖 都有一个分值,敲掉这块砖就能得到相应的分值,如下图所示. 14 15 4 3 23 ...
- 【学时总结】◆学时·VII◆ 高维DP
◆学时·VII◆ 高维DP 自学之余,偶遇DP…… ◇ 算法概述 顾名思义——一种处理多方面状态的DP,这种DP特点是……每一维的大小都不算太大(不然用dp数组存储下来内存会炸),而且枚举时容易超时… ...
- linux安装openldap步骤
目录 虚拟机环境:centos 7 一.环境准备 1.关闭 selinux firewalld 临时: setenforce 0 永久: vi /etc/sysconfig/selinux SELI ...
- tcl之文件操作