webdriver获得文本

转载 2016年06月01日 15:31:37
webDriver实现了web应用各种元素的api,并支持js操作页面元素,比如下拉框,复选框,单选按钮等
一、通过webdriver提供的api完成各种验证操作
1、检查元素的属性值
使用getAttribute()完成
WebElement element = driver.findElement(By.id("logout"));
String alignStr = element.getAttribute("align");
assertEquals("right",alignStr);
使用getCssValue()方法获取css属性
WebElement element = driver.findElement(By.id("logout"));
String width = element.getCssValue("width");
assertEquals("100px",width);
2、检查元素文本值,getText()方法
WebElement element = driver.findElement(By.id("logout"));
String alignStr = element.getText();
assertEquals("退出",alignStr);
通过以上方法可以完成对某个元素是否出现在dom中,帮助我们完成对测试结果的判断,但此方法不太常用,由于某个元素没有出现的话,findElement方法会直接抛出异常,后边我会在测试流控制的文章给大家介绍如何完成测试结果的判断
二、如何使用程序控制鼠标和键盘以完成交互操作
webdriver中提供了一个Actions类,帮助我们完成鼠标及键盘来相应事件
1、使用Actions完成一组操作,代码示例:
List<WebElement> table = driver.findElements(By.xpath("//table[@id,table_id]/tr"));
Actions builder = new Actions(driver);
builder.click(table.get(0)).keyDown(Keys.CONTROL).click(table.get(2)).keyUp(Keys.CONTROL).build().perform();
从示例中可以看出,通过Actions类构建一连串的操作,依次是,单击-》按下ctr键-》单击-》放开ctrl键  ,然后build(),最后执行定义的这一组操作
上边示例是用户在操作表格时,选择同时选中第一行到第三行表格数据的操作,大家可以根据场景需要,灵活变通,其实,就是不同事件的组合,另外需要注意的是,使用时要确保元素可见。
2、使用Actions完成双击操作
WebElement img = driver.findElement(By.id("img"));
Actions builder = new Actions(driver);
builder.doubleClick(img).build().perform();
3、执行拖拽操作,首先需要定位源元素及目的元素,以下是完成将img1拖动到img2的操作
WebElement img1 = driver.findElement(By.id("img1"));
WebElement img2 = driver.findElement(By.id("img2"));
Actions builder = new Actions(driver);
builder.dragAndDrop(img1,img2).perform();
4、调用js代码
demo_1:使用js完成关闭当前页面
JavascriptExecutor js = (JavascriptExecutor)driver;
jsStr = "window.close()";
js.executeScript(jsStr);
demo_2:使用js得到当前页面标题
JavascriptExecutor js = (JavascriptExecutor)driver;
jsStr = "return document.title";
String title = (String)js.executeScript(jsStr);
5、使用webdriver截图,代码示例:
File img = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(img, new File("target/screenshot/i.jpg")); 6、常见页面控件的操作
a. 下来框的操作,使用Select类操作,methods 在api中都有体现
b.  对于单选按钮,复选框,selenium中没有专门的类对其操作,对这两中元素使用WebElement中的isSelected() 方法操作
7、webdriver提供WindowsUtils类完成对windows的进程,注册表,系统目录的操作,详见api

8.循环中所有td里的文本 

具体实现为

    package com.example.tests;  
    import static org.junit.Assert.*;  
    import java.util.*;  
    import org.junit.*;  
    import org.openqa.selenium.*;  
    import org.openqa.selenium.ie.InternetExplorerDriver;  
    public class Selenium2 {  
        WebDriver driver = new InternetExplorerDriver();  
        JavascriptExecutor jse = (JavascriptExecutor)driver;  
        @Test  
        public void tableTest() {     
            driver.get("http://www.w3school.com.cn/html/html_tables.asp");     
            //首先得到所有tr的集合  
            List<WebElement> rows = driver.findElements(By.cssSelector(".dataintable tr"));   
            //验证表格的行数  
            assertEquals(11,rows.size());  
             //打印出所有单元格的数据  
            for (WebElement row : rows) {   
                //得到当前tr里td的集合  
                List<WebElement> cols =  row.findElements(By.tagName("td"));   
                for (WebElement col : cols) {  
                    System.out.print(col.getText());//得到td里的文本  
                }  
                System.out.println();  
            }  
            driver.close();  
        }  
    }  
打印结果为

---------------------------------------------------------------------------------

<table>定义表格
<caption>定义表格标题。
<th>定义表格的表头。
<tr>定义表格的行。
<td>定义表格单元。
<thead>定义表格的页眉。
<tbody>定义表格的主体。
<tfoot>定义表格的页脚。
<col>定义用于表格列的属性。
<colgroup>定义表格列的组。

 



20170807学习总结-selenium获取列表内容

case: 取消收藏后,验证取消的记录不在显示在收藏流程中 方法:采用selenium获取一组元素的方法去解决问题 启发:元素的定位可以先定位到大的颗粒度,在向小的颗粒度定位,例如先定位到ta...

Java中如何利用Selenium获取元素分析网页内容

本文首先探讨了编写 Selenium 脚本时的两种最简单、常用的截图方法,接着重点介绍了在难以利用普通截图方法获取到截图时,如何利用 Selenium 获取到的元素分析网页内容,进而绘制出所需要的图像...

webdriver里获取一个文本框的value

今天在写selenium自动化时,遇到一个问题 场景是这样的,我要验证一个用户个人信息修改功能是否生效,就修改了页面的一个电话号码的值, 这个元素是这样的     修改完后,我想获取...

selenium webdriver获取不到标签文本及将html特殊符号&转换为正常字符的方法

1、获取不到标签内的文本 使用selenium IDE可以获取到的标签文本使用selenium webdriver代码时得到的值为空,我遇到的原因是因为该标签是隐藏状态的: HTML代码: ...

使用selenium webdriver从隐藏元素中获取文本

方法由于webdriver spec的定义,Selenium WebDriver 只会与可见元素交互,所以获取隐藏元素的文本总是会返回空字符串。 本文介绍如何获取隐藏元素的文本...

Python抓取网页动态数据——selenium webdriver的使用

文章目的 当我们使用Python爬取网页数据时,往往用的是urllib模块,通过调用urllib模块的urlopen(url)方法返回网页对象,并使用read()方法获得url的html内容,然后使用...
  • buptlrw
  • buptlrw
  • 2015年09月30日 16:01
  • 13509

使用Selenium来抓取动态加载的页面

原文:http://my.oschina.net/flashsword/blog/147334?p=1 一般的爬虫都是直接使用http协议,下载指定url的html内容,并对内容进行分析和抽取。...

利用selenium获取动态页面的html数据

selenium调用浏览器获取动态html值,再调用其API,可以很方面获取动态数据。经测试,确实简单易用,至于效率方面就没细究了。代码参考:http://my.oschina.net/flashsw...

Selenium获取表格里所有单元格的文本

import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium....

webdriver搜索页面指定文本(支持正则表达式)

webdriver搜索页面指定文本(支持正则表达式) 废话不多说,直接贴代码,java基础不好的就查查API public static boolean searchText(WebDriver w...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:webdriver获得文本
举报原因:
原因补充:

(最多只允许输入30个字)