操作页面元素WebElement—Selenium自动化测试指南(4)

 5.5.7  XPath(xPathToFind)

  如果以上查找方法都无法定位到指定对象,那么可以按XPath进行查找。例如,百度首页有文本框,如图5-35所示。

图5-35  百度搜索文本框

  其HTML代码如下:


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

  如要操作该文本框,则可以通过其XPath表达式“//input[@id='kw']”作为查找条件获取该对象,找到该文本框,然后再输入文本,例如程序清单5-27和程序清单5-28所示的代码。

  程序清单5-27  C#代码


IWebDriver driver = new FirefoxDriver();
INavigation navigation = driver.Navigate();
navigation.GoToUrl(http://www.baidu.com);
IWebElement baiduTextBox = driver.FindElement(By.XPath("//input[@id='kw']"));
baiduTextBox.SendKeys("找到文本框");

  程序清单5-28  Java代码


WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to(http://www.baidu.com);
WebElement baiduTextBox = driver.findElement(By.xpath("//input[@id='kw']"));
baiduTextBox.sendKeys("找到文本框");

 5.6  操作页面元素WebElement

  在Selenium 1中,直接通过Selenium的各种方法来操作页面元素,但在Selenium 2中则不同,需要通过上5.5讲到的By对象先定位到对应的页面元素,然后调用这个页面元素的相关方法来进行操作。

  可以通过WebDriver的FindElement()方法获得WebElement的对象实例。

  在获取页面元素后,就可以对该页面元素进行各种操作了。

  5.6.1  Click()

  Click()方法用于执行单击元素的操作。例如,百度首页上有“登录”超级链接,如图5-36所示。

  图5-36  登录按钮

  要单击“登录”超级链接,代码如程序清单5-29或程序清单5-30所示/

  程序清单5-29  C#代码


IWebDriver driver = new FirefoxDriver();
INavigation navigation = driver.Navigate();
navigation.GoToUrl(http://www.baidu.com);
IWebElement baiduLogin = driver.FindElement(By.LinkText("登录"));
baiduLogin.Click();

  程序清单5-30  Java代码


WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to(http://www.baidu.com);
WebElement baiduLogin = driver.findElement(By.LinkText("登录"));
baiduLogin.click();

  在执行“WebElement baiduLogin = driver.findElement(By.LinkText("登录"));”时,程序先通过“driver.findElement(By.LinkText("登录"));”找到该按钮,然后将其赋值给变量baiduLogin。baiduLogin就是获取到的页面元素,它代表“登录”按钮,获取到它之后就可以对它进行各种操作了,例如单击操作baiduLogin.click()。

  注意,在Selenium 2中没有Check/UnCheck这类方法来勾选或取消复选框和单选框,所以只能通过Click方法来进行勾选或取消勾选。例如,百度贴吧的页面上有“记住我的登录状态”复选框如图5-37所示。

只能使用Click()方法对其进行勾选,如程序清单5-31和程序清单5-32所示。

  程序清单5-31  C#代码


IWebDriver driver = new FirefoxDriver();
INavigation navigation = driver.Navigate();
navigation.GoToUrl(http://tieba.baidu.com/index.html);
IWebElement rememberMe = driver.FindElement(By.Id("pass_loginLite_input_isMem0"));
rememberMe.Click();

  程序清单5-32  Java代码


WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to(http://tieba.baidu.com/index.html);
WebElement rememberMe = driver.findElement(By.id("pass_loginLite_input_isMem0"));
rememberMe.click();

  对于Selenium 2来说,因为页面元素没有Select方法,所以也只能用Click模拟实现对下拉列表框的选择。以百度贴吧搜索为例,如图5-38所示,假设要在排序方式下拉列表框中选择“按相关性进行排序”。

  其HTML代码如图5-39所示。

  可以编写代码即可选择“按相关性进行排序”,如程序清单5-33和程序清单5-34所示。

  图5-38  搜索排序下拉列表框

  图5-39  下拉列表框的HTML代码

5.6.3  Clear()

  Clear()方法用于清空input元素的值。例如,百度首页有搜索文本框,如图5-42所示。

  图5-42  百度首页搜索文本框

  可以先给文本框填入内容,然后使用Clear()将其清除,清除前先使用Thread.Sleep(3000)等待3秒,以便于观察),代码如程序清单5-37和程序清单5-38所示。

  程序清单5-37  C#代码


IWebDriver driver = new FirefoxDriver();
INavigation navigation = driver.Navigate();
navigation.GoToUrl(http://www.baidu.com);
IWebElement baiduTextBox = driver.FindElement(By.XPath("//input[@id='kw']"));
baiduTextBox.SendKeys("找到文本框");
System.Threading.Thread.Sleep(3000);
baiduTextBox.Clear();

  程序清单5-38  Java代码


WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
navigation.to("http://www.baidu.com");
WebElement baiduTextBox = driver.findElement(By.id("kw"));
baiduTextBox.sendKeys("找到文本框");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
baiduTextBox.clear();

  5.6.4  Submit()

  Submit()方法用于对指定元素所在的form元素进行提交操作。

  例如,百度贴吧的登录界面如图5-43所示。

  图5-43  百度贴吧登录界面

  用Firebug查看它的HTML,如图5-44所示。

  图5-44  百度贴吧登录HTML代码

  可以看到,它由一个form组成,只要对这个from中的任何元素使用Submit()方法,都会提交这个form。

本文选自《Selenium自动化测试指南》第五章节,本站经人民邮电出版社和作者的授权,近期将进行部分章节的连载,敬请期待!

版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。

任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。

   

最新内容请见作者的GitHub页:http://qaseven.github.io/

   

时间: 2024-09-18 07:31:54

操作页面元素WebElement—Selenium自动化测试指南(4)的相关文章

查找条件对象By—Selenium自动化测试指南(3)

51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节.任何个人或单位未获得明确的书面许可,不得对本文内容复制.转载或进行镜像,否则将追究法律责任.) 程序清单5-12  Java代码 package Project1; import org.openqa.selenium.*; import org.openqa.selenium.WebDriver.*; import org.openqa.selenium.firefox.*; public class Project1Cl

安装并引用Selenium 2—Selenium自动化测试指南(1)

(51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节.任何个人或单位未获得明确的书面许可,不得对本文内容复制.转载或进行镜像,否则将追究法律责任.) 第5章 Selenium 2(WebDriver) Selenium 2(即WebDriver)是一种用于Web应用程序的自动测试工具,它提供了一套友好的API,与Selenium 1(Selenium-RC)相比,Selenium 2的API更容易理解和使用,其可读性和可维护性也大大提高.Selenium 2完全就是一套类库,

《Selenium自动化测试指南》—第1章1.1节自动化测试基础

1.1 自动化测试基础 Selenium自动化测试指南1.1.1 软件测试概述 即使是经验非常丰富的程序员,在编写代码时也很容易出现错误,这些错误也许是由于需求不明确,也许是由于设计问题,也许是编码中出现了失误等.但无论是怎样的错误,若不及时处理,都会降低软件的可靠性,严重时甚至会导致整个软件的失败. 为了排除这些错误,人们引入了软件测试的概念.通俗地说,软件测试就是为了发现程序中的错误而分析或执行程序的过程. 据研究机构统计分析表明,国外软件开发机构40%的工作量都花在软件测试上,软件测试费用

《Selenium自动化测试指南》—第2章2.2节FirePath

2.2 FirePath Selenium自动化测试指南 使用Firebug可以很方便地复制XPath,但是原生的Firebug并不支持按XPath查找元素. 如果需要验证编写的XPath是否正确,则需要使用Firebug的扩展插件FirePath. (1)打开Firefox,单击主菜单,选择"附加组件",如图2-11所示. (2)进入"搜索"页面,在搜索文本框中输入firepath,单击搜索按钮并进行安装,如图所示2-12. 安装FirePath之前,FireBu

选择浏览器开始测试—Selenium自动化测试指南(2)

(51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节.任何个人或单位未获得明确的书面许可,不得对本文内容复制.转载或进行镜像,否则将追究法律责任.) 操作完毕后,可看到如图5-17所示的新建项目. 图5-17  新建的Java项目 2.添加引用 (1)在Package Explorer中用鼠标右键单击Project1,选择Properties,如图5-18所示. (2)选择Java Build Path,在右边选择Libraries,单击Add External JARs,如

《Selenium自动化测试指南》—第2章2.1节FireBug

第2章 必备辅助工具Selenium自动化测试指南工欲善其事,必先利其器.Selenium是一个很不错的测试工具,但因为它是Web测试工具,在编写代码时会常与HTML打交道,同时还会使用大量的XPath表达式进行查询,所以对测试人员来说,需要掌握HTML和XPath的使用. 下面分别介绍两款辅助工具:FireBug和FirePath.它们都是FireFox插件,能够很方便地对HTML和XPath进行查看和验证,对Selenium测试代码的编写起着很大的帮助作用. 2.1 FireBugSelen

DHTML的四个属性来动态操作页面元素的内容

dhtml|动态|页面 IE的DHTML对象提供了四个可读写的属性来动态操作页面元素的内容:innerText, outerText, innerHTML, outerHTML. 需注意两点: 1. 其中innerText,outerText属性的值是作为普通文本呈现的,即使它含有HTML标签也如实反应出来;而innerHTML, outerHTML呈现的是经HTML引擎解析后文本,它可以反应属性中HTML标签的表现效果. 2. 对对象的outerText,outerHTML属性赋值(即写操作)

使用protractor操作页面元素

Protractor是为Angular JS应用量身打造的端到端测试框架.它可以真实的驱动浏览器,自动完成对web应用的测试.Protractor驱动浏览器使用的是WebDriver标准,所以使用起来与其他语言实现的WebDriver库大体相同.当然,我说大体相同那肯定还是有不同的地方.一旦不注意这些不同的地方就会坑到你(我就被成功坑过,所以才有了这篇文章). Protractor编写测试的核心是查找DOM元素,与其交互,然后查看交互后的状态与你的期望是否一致.所以查找DOM元素并与之交互显的非

《Selenium自动化测试指南》—第1章1.2节HTML简介

为文档的正文,其信息会显示到浏览器上.中使用的标签中可以使用以下标签: 将文档的题目放在浏览器标题栏中.中只有该标签会显示到浏览器,其他则不会.在该文档中要引用的脚本,例如JavaScript.VBScript. 在该文档中要引用的CSS样式,以控制文档的格式.