Selenium2学习-013-WebUI自动化实战实例-011-WebElement.getText()值为空问题探索及解决
今天有个朋友在群里问 WebElement.getText() 值为空,当你发现取到的值为空的时候,会不会郁闷呢?明明看到的值不为空,脚本看着也没有问题啊,为何取到的值为空呢!!!万千纠结啊,若是长时间困在此处,是不是犹如修炼冲关遇到了瓶颈,就差那么一点点就可得道,哎。。。。。。
不知道其他的各位小主们有没有遇到过这种情况,下面俺就针对此问题提出一些俺自己的见解,敬请各位小主参阅,若有不足或错误之处,敬请大神告知,非常感谢!
出现此种情况的原因有以下几点:
1、元素隐藏,即 WebElement.isDisplayed = false,当 WebDriver 断定 isDisplayed = false 时,WebElement.getText() 值为空;
--> 解决方法:通过 js 修改元素的属性,使其 CSS display 的值为 block,而非 none
2、元素的值存在某个属性当中,例如 value 属性,此种一般是通过 js 操作赋值到 value 的
--> 解决方法:通过 WebElement.getAttribute('') 获取对应的值,当 isDisplayed = false 时,WebElement.getAttribute('') 可正确获取元素对应的属性值
3、当前元素并未存储相应的操作值,操作值被存在了其他的地方
--> 解决方法:找到对应的元素,获取值
同时,俺在网上找到了一个实例对应上述三个原因的第 3 点,因而就以易迅网搜索商品的搜索框为例,实际演示一下,以下为源码,请参阅:
package main.aaron.demo.javascript; import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import org.testng.annotations.Test; import main.aaron.sele.core.TestCase; /**
* JavaScript 在 Selenium 自动化中的应用实例
*
* @author Aaron.ffp
* @version V1.0.0: autoSeleniumDemo main.aaron.demo.javascript JavaScript.java, 2015-6-17 00:24:59 Exp $
*/
public class JavaScript extends TestCase{
// 执行 JavaScript 脚本,输入查询内容
private String jscript = "document.getElementById('q_show').value='iPhone 6 plus'";
private String baseUrl = "http://www.yixun.com/"; /**
* JavaScript 赋值
*
* @author Aaron.ffp
* @version V1.0.0: autoSeleniumDemo main.aaron.demo.javascript JavaScript.java testJscript, 2015-6-17 12:37:57 Exp $
*
* @throws InterruptedException
*/
@Test
public void testJscript() throws InterruptedException{
// 打开易迅网首页
this.webdriver.get(this.baseUrl); // 获取搜索按钮
WebElement search = this.webdriver.findElement(By.cssSelector(".mod_search_btn")); // 输入查询值
this.execJavascript(jscript); // 获取搜索框
WebElement in = this.webdriver.findElement(By.id("q_show")); // 点击搜索按钮
search.click(); // 获取搜索值的真正存储位置
WebElement intext = this.webdriver.findElement(By.cssSelector("#keyWord")); // 页面刷新,需要重新获取元素,否则会报错
in = this.webdriver.findElement(By.id("q_show")); // 搜索框中的值未曾保存在 q_show 元素内,因而最终获得的值为空
System.out.println("现像值 --- q_show.getText() : " + in.getText());
// 搜索框中的值实际保存的元素,对应值为空的第二种原因
System.out.println("本质值,对应值为空的第二种原因 --- #keyWord.getAttribute('') : " + intext.getText());
// 搜索框中的值实际保存的元素,对应值为空的第三种原因
System.out.println("本质值,对应值为空的第三种原因 --- #keyWord.getAttribute('') : " + intext.getAttribute("value")); this.webdriver.close();
this.webdriver.quit();
} /**
* 执行 JScript 脚本
*
* @author Aaron.ffp
* @version V1.0.0: autoUISelenium main.java.aaron.sele.core SeleniumCore.java execJavascript, 2015-6-17 00:25:38 Exp $
*
* @param jscript 脚本
*/
public void execJavascript(String jscript){
((JavascriptExecutor)this.webdriver).executeScript(jscript);
}
}
WebElement.getText() 为空及解决实现源代码
至此,WebUI 自动化功能测试脚本第 011 篇-WebElement.getText()值为空问题探索及解决 顺利完结,希望此文能够给初学 Selenium 的您一份参考。
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^
Selenium2学习-013-WebUI自动化实战实例-011-WebElement.getText()值为空问题探索及解决的更多相关文章
- Selenium2学习-001-Selenium2 WebUI自动化Java开发 Windows 环境配置
此文主要介绍 Selenium2 WebUI自动化Java开发 Windows 环境配置,供各位亲们参考,若有不足之处,敬请各位大神指正,非常感谢! 所需软件列表如下所示: 所属分类 具体名称 备注 ...
- Selenium2学习-007-WebUI自动化实战实例-005-解决 Firefox 版本不兼容:org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary
此文主要讲述 Java 运行 Selenium 脚本时,因 Friefox 浏览器版本与 selenium-server-standalone-x.xx.x.jar 不兼容引起的 org.openqa ...
- Selenium2学习-035-WebUI自动化实战实例-033-页面快照截图应用之三 -- 区域截图(专业版)
之前有写过两篇博文讲述了 WebUI 自动化测试脚本中常用的截图方法,敬请参阅如下所示链接: 浏览器显示区域截图 浏览器指定区域截图 那么当需要截取的区域不在浏览器显示窗口范围之内时,之前的方法显然无 ...
- Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)
日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ...
- Selenium2学习-039-WebUI自动化实战实例-文件上传下载
通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...
- Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题
日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚 ...
- Selenium2学习-016-WebUI自动化实战实例-014-Selenium 窗口选择
在日常的 WebUI 自动化测试脚本编写过程中,经常需要打开新的页面,或者在多个打开的页面之间进行切换,以对页面元素进行相应的操作,以模拟用户的行为,实现 UI 的自动化测试.在过往的时间中,经常有初 ...
- Selenium2学习-014-WebUI自动化实战实例-012-Selenium 操作下拉列表实例-div+{js|jquery}
之前已经讲过了 Selenium 操作 Select 实现的下拉列表:Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select,但是在实际的日 ...
- Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select
此文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,对下拉列表框 Select 的操作. 下拉列表是 Web UI 自动化测试过程中使用率非常高的,通常有两种形式的下拉列表,一 ...
随机推荐
- 十个JavaScript中易犯的小错误,你中了几枪?
序言 在今天,JavaScript已经成为了网页编辑的核心.尤其是过去的几年,互联网见证了在SPA开发.图形处理.交互等方面大量JS库的出现. 如果初次打交道,很多人会觉得js很简单.确实,对于很多有 ...
- 小结:ac自动机
复杂度: 查找O(n),维护O(n) 概要: 应用了kmp的自匹配思想,在trie建图时维护一个fali指针,指向上一个匹配的点,这点是用bfs做到.匹配串的时候同样没匹配到就和kmp一样返回. 应用 ...
- php 即使客户端或者服务器断开(如关掉浏览器)脚本也可以继续执行
<?php ignore_user_abort(); // run script in background set_time_limit(0); // run script forever $ ...
- PS如何查找自己想要的字体
曾经很多人问我,这是什么字体,答曰:“不知道”,自己平时在作图时也经常会遇到这样的问题,于是我就把文字打出来,然后比照PS里边已经导入的字体挨个试验,这样不仅浪费了大量的时间和精力,而且比对完后,各种 ...
- 从prompt输入10个人的年龄放入数组,将十个人的年龄求总和。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Cdn加速
http://www.bootcdn.cn/ http://cdn.code.baidu.com/ backbone <script src="https://cdn.bootcss. ...
- 《GK101任意波发生器》升级固件发布(版本:1.0.2build306)
一.固件说明: 硬件版本:0,logic.3 固件版本:1.0.2.build306 编译日期:2014-09-24 ====================================== 二. ...
- ImageMagick jmagick 安装
在安装ImageMagick之前,请检查下面包已经安装 tiff-3.9.5.tar.gz (rpm -qa|grep libtiff检查是否已经安装) libpng-1.2.46.t ...
- 将url的查询参数解析成字典对象
1, 这个题目不约而同的出现在了多家公司的面试题中,当然也是因为太过于典型,解决方案无非就是拆字符或者用正则匹配来解决,我个人强烈建议用正则匹配,因为url允许用户随意输入,如果用拆字符的方式,有任何 ...
- NSQ:分布式消息队列学习记录
参考资料: NSQ:分布式的实时消息平台 初识NSQ分布式实时消息架构 深入NSQ之旅 nsq topic和channel的区别