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

   


目录
相关文章
|
5天前
|
数据采集 Web App开发 测试技术
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
在网络爬虫领域,Selenium与WebDriver是实现跨浏览器自动化数据抓取的利器。本文详细介绍了如何利用Selenium和WebDriver结合代理IP技术提升数据抓取的稳定性和效率。通过设置user-agent和cookie来模拟真实用户行为,避免被网站检测和阻止。文章提供了具体的代码示例,展示了如何配置代理IP、设置user-agent和cookie,并实现了跨浏览器的数据抓取。合理的参数配置能有效减少爬虫被封禁的风险,提高数据抓取效率。
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
|
4天前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。
|
13天前
|
Web App开发 Java 测试技术
自动化测试的新篇章:使用Selenium WebDriver进行高效测试
【8月更文挑战第31天】 在软件开发的海洋中,自动化测试犹如一艘航船,带领着质量保证团队驶向效率与精准的彼岸。本文将揭开Selenium WebDriver的神秘面纱,通过实际案例引导您掌握这一强大的自动化测试工具。我们将从Selenium WebDriver的基础概念出发,逐步深入到代码示例,最后探讨其在现实项目中的应用场景和优势,旨在为您的软件测试之旅提供清晰的指南。
|
13天前
|
Web App开发 测试技术 持续交付
探索自动化测试:以Selenium和Python为例
【8月更文挑战第31天】自动化测试在现代软件开发中扮演着不可或缺的角色。本文将通过一个简化的示例,展示如何使用Selenium和Python进行Web应用的自动化测试。我们将从安装必要的工具开始,逐步构建一个简单的测试脚本,并执行它来验证其功能。通过这个过程,我们旨在揭示自动化测试的价值,并激励读者深入探索这一领域。
|
13天前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【8月更文挑战第31天】在软件开发的世界中,自动化测试是提高产品质量和开发效率不可或缺的一环。本文将深入探讨Selenium这一强大的自动化测试工具,从其架构、优势到实战应用,一步步揭示如何利用Selenium框架提升软件测试的效率和准确性。通过具体的代码示例,我们将展示Selenium如何简化测试流程,帮助开发者快速定位问题,确保软件的稳定性和可靠性。无论你是测试新手还是资深开发者,这篇文章都将为你打开一扇通往高效自动化测试的大门。
|
13天前
|
Java 测试技术 API
探索自动化测试的奥秘:从Selenium到Appium
【8月更文挑战第31天】本文旨在引导读者理解自动化测试的重要性,并逐步深入介绍如何利用Selenium和Appium这两个强大的工具来提升测试效率和质量。文章不仅分享理论知识,还通过具体代码示例,展示如何在Web应用和移动应用测试中实施自动化策略。
|
13天前
|
Web App开发 人工智能 测试技术
探索自动化测试的奥秘:以Selenium为例
【8月更文挑战第31天】在软件发展的快速车道上,自动化测试是确保质量和效率的关键。本文将深入探讨自动化测试的重要性,并以Selenium这一流行的自动化测试框架为例,展示如何通过代码实现自动化测试流程。文章不仅提供了实用的代码示例,还讨论了自动化测试在现代软件开发中扮演的角色和面临的挑战。
|
13天前
|
Web App开发 敏捷开发 Java
自动化测试入门:以Selenium为例
【8月更文挑战第31天】在软件开发的海洋中,自动化测试犹如一座灯塔,指引着项目质量保障的方向。本文将带你驶入Selenium自动化测试的港湾,从搭建环境到编写简单的测试脚本,逐步展开对Web应用功能和界面的自动化验证之旅。通过实际代码示例,我们将一起探索如何利用Selenium工具提升测试效率,确保软件质量的同时,为开发流程增添一份信心与乐趣。
|
13天前
|
Web App开发 安全 测试技术
自动化测试中的Python魔法:使用Selenium和pytest框架
【8月更文挑战第31天】 在软件开发的海洋中,自动化测试是确保航行安全的灯塔。本文将带你探索如何利用Python语言结合Selenium和pytest框架,搭建一套高效的自动化测试体系。我们将从基础设置讲起,逐步深入到编写测试用例,最后通过一个实战案例来展示如何在实际项目中运用这些工具。文章旨在为读者提供一套清晰的自动化测试解决方案,让你的开发之旅更加顺畅。
|
7天前
|
运维 Ubuntu Devops
自动化运维工具的魅力:Ansible入门
【9月更文挑战第5天】在快速变化的IT世界里,自动化运维不再是可选项,而是必需品。Ansible,一款简单却强大的自动化工具,正成为众多DevOps工程师的首选。本文将带你了解Ansible的基本概念、安装步骤以及如何编写简单的Playbook,从而开启你的自动化之旅。
57 35

热门文章

最新文章