欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 宝鼎售后问题提交 | 后台管理


新闻资讯

MENU

软件开发知识

Java Selenium (五 昆山软件开发 ) 元素定位大全

点击: 次  来源:宝鼎软件 时间:2017-07-06

原文出处: 小坦克

页面元素定位是自动化中最重要的工作, selenium Webdriver 提供了许多种元素定位的要领。 测试人员应该纯熟把握各类定位要领。 利用最简朴,最不变的定位要领。 

自动化测试步调

Java Selenium (五 昆山软件开拓 ) 元素定位大全

在自动化测试进程中, 测试措施凡是的操纵页面元素步调

1. 找到Web的页面元素,并赋予到一个存储工具中 (WebElement)

2. 对存储页面元素的工具举办操纵, 譬喻:点击链接,在输入框中输入字符等

3. 验证页面上的元素是否切合预期

通过这三个步调,软件开发, 我们可以完成一个页面元素的操纵, 找到页面元素是很重要的一个步调。 找不到页面元素,后头就没法做了。

Web页面技能的现实巨大性, 造成大量的页面元素很难定位。 常常有人不知道怎么定位。

定位要领大全

利用WebDriver工具的findElement函数界说一个Web页面元素

利用findElements函数可以定位页面的多个元素

定位的页面元素需要利用WebElement工具来存储,以便后续利用

常用的定位页面元素要领如下, 按推荐排序

Java Selenium (五 昆山软件开拓 ) 元素定位大全

如何定位

在利用selenium webdriver举办元素定位时,凡是利用findElement或findElements要领团结By类返回元素句柄来定位元素

findElement() 要领返回一个元素, 假如没有找到,会抛出一个异常 NoElementFindException()

findElements()要领返回多个元素, 假如没有找到,会返回空数组, 不会抛出异常

如何选择定位要领

计策是, 选择简朴,不变的定位要领。

1. 当页面元素有id属性的时候,只管利用id来定位。没有的话再选择其他定位要领

2. cssSelector 执行速度快,推荐利用

3. 定位超链接的时候,可以思量linkText或partialLinkText:可是要留意的是 ,文本常常产生改变,所以不推荐用

3. xpath 成果最强悍。 其时执行速度慢,因为需要查找整个DOM, 所以只管罕用。 实在没有步伐的时候,才利用xpath

通过ID查找元素: By.id()

通过页面元素的ID来查找元素是最为推荐的方法, W3C尺度推荐开拓人员为每一个页面元素都提供唯一无二的ID属性

一旦元素被赋予了独一的ID属性., 我们做自动化测试的时候,很容易定位到元素. 元素的ID被作为首选的识别属性, 因为是最快的识别计策.

以百度主页为例, 搜索框的HTML示例代码如下, 它的ID为kw

<input type="text" autocomplete="off" maxlength="100" id="kw" name="wd" class="s_ipt">

“百度一下”搜索按钮元素的HTML示例代码如下, 它ID为su

<input type="submit" class="btn self-btn bg s_btn" id="su" value="百度一下">

在Selenium/WebDriver 中通过ID查找元素的Java示例代码如下

WebDriver driver  = new FirefoxDriver();
        driver.get("http://www.baidu.com");
         
        WebElement searchBox = driver.findElement(By.id("kw"));
        searchBox.sendKeys("小坦克 博客园");
        WebElement searchButton = driver.findElement(By.id("su"));
        searchButton.submit();
        
        driver.close();

通过Name查找元素:By.name()

以豆瓣网的主页搜索框为例, 其搜索框的HTML代码如下, 它name是: q

<input type="text" autocomplete="off" name="q" placeholder="书籍、影戏、音乐、小组、小站、成员" size="12" maxlength="60">

WebDriver中通过name查找豆瓣主页上的搜索框的Java代码如下:

        WebDriver driver  = new FirefoxDriver();
        driver.get("http://www.douban.com");
         
        WebElement searchBox = driver.findElement(By.name("q"));
        searchBox.sendKeys("小坦克");
        searchBox.submit();

通过TagName查找元素: By.tagName()

通过tagName来搜索元素的时候,会返回多个元素. 因此需要利用findElements()

        WebDriver driver  = new FirefoxDriver();
        driver.get("http://www.cnblogs.com");
         
        List<WebElement> buttons = driver.findElements(By.tagName("div"));
        System.out.println("Button:" + buttons.size());

留意: 假如利用tagName, 要留意许多HTML元素的tagName是沟通的,