操作页面元素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/

   


目录
相关文章
|
14小时前
|
Web App开发 前端开发 JavaScript
自动化测试 selenium基础
自动化测试 selenium基础
10 2
|
1天前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)
【5月更文挑战第3天】本文介绍了如何在Web自动化测试中使用JavaScript执行器(JavascriptExecutor)来完成Selenium API无法处理的任务。首先,需要将WebDriver转换为JavascriptExecutor对象,然后通过executeScript方法执行JavaScript代码。示例用法包括设置JS代码字符串并调用executeScript。文章提供了两个实战场景:一是当时间插件限制输入时,用JS去除元素的readonly属性;二是处理需滚动才能显示的元素,利用JS滚动页面。还给出了一个滚动到底部的代码示例,并提供了详细步骤和解释。
22 10
|
2天前
|
JavaScript 前端开发 测试技术
《手把手教你》系列技巧篇(三十八)-java+ selenium自动化测试-日历时间控件-下篇(详解教程)
【5月更文挑战第2天】在自动化测试过程中,经常会遇到处理日期控件的点击问题。宏哥之前分享过一种方法,但如果输入框是`readonly`属性,这种方法就无法奏效了。不过,通过修改元素属性,依然可以实现自动化填写日期。首先,定位到日期输入框并移除`readonly`属性,然后使用`sendKeys`方法输入日期。这样,即使输入框设置了`readonly`,也能成功处理日期控件。
19 1
|
3天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(三十七)-java+ selenium自动化测试-日历时间控件-上篇(详解教程)
【5月更文挑战第1天】该文介绍了使用Selenium自动化测试网页日历控件的方法。首先,文章提到在某些Web应用中,日历控件常用于选择日期并筛选数据。接着,它提供了两个实现思路:一是将日历视为文本输入框,直接输入日期;二是模拟用户交互,逐步选择日期。文中给出了JQueryUI网站的一个示例,并展示了对应的Java代码实现,包括点击日历、选择日期等操作。
15 0
|
8天前
|
敏捷开发 监控 测试技术
探索自动化测试工具Selenium Grid的高效集成策略
【4月更文挑战第30天】在现代Web应用的快速迭代和持续部署中,测试自动化已成为确保产品质量的关键。Selenium Grid作为一款支持多种浏览器和操作系统的测试工具,提供了并行执行测试用例的能力,极大地提升了测试效率。本文将深入探讨如何高效地将Selenium Grid集成到现有的测试框架中,以及实施过程中的最佳实践,帮助团队最大化测试覆盖率,同时降低资源消耗。
|
8天前
|
数据管理 测试技术
深入理解自动化测试框架:以Selenium为例
【4月更文挑战第30天】 随着软件开发的快速发展,自动化测试已经成为保证软件质量和提升开发效率的重要手段。本文将深入探讨自动化测试框架的核心概念,并以广泛应用的开源工具Selenium为例,解析其架构、原理及在实际项目中的运用。通过实例分析与性能评估,旨在为读者提供一套系统的自动化测试解决方案,并探讨其在复杂应用场景下的优化策略。
|
8天前
|
敏捷开发 前端开发 JavaScript
深入理解自动化测试框架:以Selenium为例
【4月更文挑战第30天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加快市场投放的关键步骤。本文聚焦于流行的自动化测试框架——Selenium,探讨其架构、核心组件以及如何有效地利用Selenium进行Web应用测试。通过分析真实案例,我们将揭示Selenium在实际项目中的应用优势与面临的挑战,并提出优化策略。文章的目的在于帮助测试工程师深入理解Selenium,提升其在复杂项目中的运用效率。
|
8天前
|
前端开发 IDE 数据可视化
深入理解与应用自动化测试框架Selenium的最佳实践
【4月更文挑战第30天】 本文将深入剖析自动化测试框架Selenium的核心原理,并结合最佳实践案例,探讨如何有效提升测试覆盖率和效率。文中不仅涉及Selenium的架构解析,还将提供针对性的策略来优化测试脚本,确保测试流程的稳定性与可靠性。通过实例演示,读者可以掌握如何在不同测试场景中灵活运用Selenium,以及如何处理常见的技术挑战。
|
26天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
2月前
|
数据采集 机器学习/深度学习 算法框架/工具
利用Python实现基于图像识别的自动化数据采集系统
本文介绍了如何利用Python编程语言结合图像识别技术,构建一个自动化的数据采集系统。通过分析图像内容,实现对特定信息的提取和识别,并将其转化为结构化数据,从而实现高效、准确地采集需要的信息。本文将详细讨论系统的设计思路、技术实现以及应用场景。

热门文章

最新文章