WebElement.getText()为空解决方法

当使用getText()获取一个普通的链接文本时:

<a href="http://www.baidu.com">baidu</a>

如果得到的文本只为空,而非我们期望的baidu.那么尝试使用WebElement.isDisplayed()时候,将会得到false的结果.再尝试使用getAttribute("href"),发现能够争取获取href的值.由此可以说明:

  1. WebDriver判定isDisplayed为false的元素,那么getText()将为空
  2. isDisplayed为false的元素,依然可以通过getAttribute()方法获取元素的属性.

所以,当getText()为空的时候,可以通过两种方法获取链接的文本

  1. 修改页面当前元素,或者当前元素父元素的CSS,使元素的isDisplayed()值为true.
  2. 使用getAttribute("innerHTML")获取文本值

由此我们也可以知道,isDisplayed为false,是指那个元素是存在的,只是webdriver认为不见.回到关键问题,webdriver是如何判断一个元素是否displayed,请参照:

http://www.w3.org/TR/webdriver/#determining-visibility

 

事实上,我所要测试的link,在运行的时候并非隐藏而是可见的,运行中获取的CSS display值为block而非none.

大概是因为我的目标链接是在一个弹出下拉菜单中的原因

 

本文出自"lijingshou"博客,转载请务必保留此出处http://lijingshou.iteye.com/blog/2082704

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为每句代码做注释,并给出优化算法:public static void main(String[] args){ System.setProperty("webdriver.firefox.bin","C:\Users\Y\Desktop\软件测试\实验二\实验相关\FirefoxChina_13.0.1\Mozilla Firefox\firefox.exe"); WebDriver driver = new FirefoxDriver(); Navigation na = driver.navigate(); na.to("https://shz.58.com/ershoufang/"); driver.findElement(By.id("search-input")).clear(); List<WebElement> ele = driver.findElements(By.cssSelector("h3.property-content-title-name"));//爬取房屋名字 List<WebElement> ele1s=new ArrayList<>(); List<WebElement> ele3s=new ArrayList<>(); for(int j=1;j<=10;j++){ String s1="//div[@id='__layout']/div/section/section[3]/section/section[2]/div["+j+ "]/a/div[2]/div/section/div[@class='property-content-info']/p[2]"; String s3="//div[@id='__layout']/div/section/section[3]/section/section[2]/div["+j+ "]/a/div[2]/div/section/div[@class='property-content-info property-content-info-comm']/p[2]"; WebElement ele11 = driver.findElement(By.xpath(s1));//爬取房屋面积信息 WebElement ele33 = driver.findElement(By.xpath(s3));//爬取房屋地址信息 ele1s.add(ele11); ele3s.add(ele33); } List<WebElement> ele2 = driver.findElements(By.cssSelector("p.property-price-total"));//爬取房屋价格信息 for(int i=0;i<ele1s.size();i++){ System.out.println("名字:"+ele.get(i).getText()); System.out.println("地址:"+ele3s.get(i).getText()); System.out.println("面积:"+ele1s.get(i).getText()); System.out.println("价格:"+ele2.get(i).getText()); System.out.println(); } }
05-15

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值