西安的做网站的公司,aso优化运营,建立网站的服务器,住房和城乡建设部网站行标从这一篇开始#xff0c;开始正式的介绍Selenium 以及相关的组件#xff0c;本文的将讨论如下问题#xff1a; Selenium基本的概念以及在企业化测试框架中的位置Selenium核心对象#xff08;浏览器驱动#xff09; Web DriverSelenium核心对象#xff08;Dom元素#xf…从这一篇开始开始正式的介绍Selenium 以及相关的组件本文的将讨论如下问题 Selenium基本的概念以及在企业化测试框架中的位置Selenium核心对象浏览器驱动 Web DriverSelenium核心对象Dom元素Web Element顺便说明下我所讲到的是Selenium WebDriver的版本。 一Selenium基本概念 Selenium相关的概念的和资料在网上有很多。下面的这个是引用百度上面的介绍 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite、Google Chrome等。这个工具的主要功能包括测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。 设置这一部分的内容不是为了说明Selenium是什么毕竟类似的资源随便一搜就有一大把。我更想分享给大家的是Selenium本身在企业级的测试框架中处于一个什么样的位置。就拿我后续文章想要给大家展示的测试架构来说。Selenium所处的位置。如图所示Selenium不过是整个测试框架的一部分提供了针对B/S应用程序的测试驱动即帮助我们提供了模拟在浏览器内部进行操作的功能而整体的自动化平台的搭建还会结合其他的框架如单元测试框架xUnit.Net针对Windows桌面应用的驱动针对手机应用的驱动提供数据访问的能力... ...对于如何构建完整的测试框架有机会我会开一个新的主题文章来讨论不懂也没有关系这里只是希望初学者在一开始就有一个系统的概念知道自己所学的内容将来会用在哪里该用在哪里。 二Selenium 核心对象 - 浏览器驱动WebDriver 正如之前讲到的Selenium主要的功能是协助我们来模拟人工操作浏览器。那么我们应当如何来操作浏览器呢答案就是WebDriver Selenium 为我们提供了操作浏览器的统一接口以及针对各种主流浏览器驱动程序的实现 如上图所示可以看到每一种WebDriver 都是对了各个浏览器厂商提供的驱动包的封装Selenium的优点在于为使用者提供了多种语言版本的Driver这里我们只是描述C#版本的实现其他版本也有类似的实现。说到这里我们可以类比一下其他的测试驱动框架比如Appium或是White其实都是封装了系统提供的自动化测试API降低了上层的开发或者测试人员的学习成本和编程复杂度... ... 把上图简化一下我们可以看到以下几个对象 IWebDriver Selenium 定义的WebDriver接口具备常用的浏览器操作功能。ChromeDriver 基于谷歌浏览器的驱动使用时需要额外的驱动程序。FireFoxDriver 基于Firefox浏览器的驱动。InternetExplorerDriver 基于IE浏览器的驱动使用时需要额外的驱动程序。 下面列出了Driver接口定的主要方法和属性 Methods Close : 关闭当前窗口。FindElement 查找Dom元素返回单个的DOM元素。FindElements : 查找Dom元素返回符合条件的DOM元素集合。Manage 管理浏览器的设置信息。Navigate 导航到某个地址。Quit 关闭浏览器。SwitchTo 用于切换Frame 和Window处理弹出框等。Properties CurrentWindowHandle : 获取当前窗口的操作句柄。PageSource 获取最后一次加载的页面源代码。Title 获取当前页面的Title。Url 获取或设置当前浏览器的Url地址。WindowHandles 获取当前浏览器所有打开窗口的操作句柄。三Selenium 核心对象 - DOM元素对象WebElement 同WebDriver一样Selenium提供的WebElement对象是用来描述页面上的DOM对象HTML的DOM对象用来描述页面上的HTML元素如页面上的按钮多选框输入框文本域图片... ... 都可以看作是一个WebElement对象在后面的文章里会对WebElement相关的操作和针对各个不同的DOM对象类型的处理做进一步的介绍这一部分我们给大家展示一下WebElement常用的方法和属性 Methods Clear 清空当前DOM元素内容用于文本输入元素。Click 单击当前DOM元素。FindElement 查找当前DOM元素下的子元素返回单个的DOM元素。FindElements : 查找当前DOM元素下的子元素返回符合条件的DOM元素集合。GetAttribute 获取当前DOM元素的属性值。GetCssValue 获取当前DOM元素CSS样式。SendKey 想当前DOM元素输入指定文本。Submit 提交当前元素到Web服务器。Properties Display: 获取元素是否显示。Enabled 获取元素是否可用。Location 获取元素位置信息。Seleced 获取元素是否选中。Size 获取元素的Height 和 Width。TagName 获取元素的TagName。Text 获取元素的文本内容。四Selenium 核心对象 - By Class定位条件 关于By Class我会在下一篇《Lesson 03 - Selenium For C# 之 元素定位》中介绍。 五Demo 说了这么多该到动手写点什么的时候了。so... 我做了个简单的Demo供大家有个感官的认识。下面的Code我已经上传到Github地址是https://github.com/DemoCnblogs/Selenium 这个Dome的主要有两个目的一方面对之前描述的部分概念做一个简单的展示另一方面主要展示了xUnit.Net Test Case的基本结构代码如下 1 using OpenQA.Selenium;2 using OpenQA.Selenium.Firefox;3 using Xunit;4 using Xunit.Abstractions;5 6 namespace Demo.SeleniumTest7 {8 public class Lesson02_CoreObject9 {
10 /// summary
11 /// 输出对象
12 /// /summary
13 private readonly ITestOutputHelper _output;
14 /// summary
15 /// 构造函数初始化输出对象
16 /// /summary
17 /// param nameoutput注入输出对象/param
18 public Lesson02_CoreObject(ITestOutputHelper output)
19 {
20 this._output output;
21 }
22
23 /// summary
24 /// demo1 : 获取元素
25 /// /summary
26 [Fact(DisplayName Cnblogs.CoreObject.Demo1)]
27 public void CoreObject_Demo1()
28 {
29 _output.WriteLine(Step 01 : 启动浏览器并打开博客园首页。);
30 IWebDriver driver new FirefoxDriver();
31 driver.Url http://www.cnblogs.com;
32 driver.Manage().Window.Maximize();
33
34 _output.WriteLine(Step 02 : 获取并输出部分页面信息。);
35 _output.WriteLine(string.Format(Current window handle: {0}, driver.CurrentWindowHandle));
36 _output.WriteLine(string.Format(Window handle count: {0}, driver.WindowHandles.Count));
37 _output.WriteLine(string.Format(Current window title: {0}, driver.Title));
38
39 _output.WriteLine(Step 03 : 验证博客园站点的 Title 是否正确。);
40 Assert.Equalstring(博客园 - 开发者的网上家园, driver.Title);
41
42 _output.WriteLine(Step 04 : 关闭当前页面。);
43 driver.Close();
44 }
45 }
46 } 这里我简单的介绍一下Code的逻辑 首先构造函数注入了输出的对象这部分我会在xUnit.Net相关的文章作讲解。性急的同学要是等不及我的更新也可以参照xUnit.Net的文档http://xunit.github.io。 然后就是我们的Test case 开启本机的火狐浏览器最大化并导航到博客园首页输出信息检验Title是否正确关闭浏览器。 需要说明的是 输出和验证Title是xUnit.Net的功能每个单元测试框架都有。当然生产环境使用的测试Code是会做更多的封装的这个代码只是供大家学习使用。 最后处理你会看见你本机的浏览器上面的操作之外还会得到如下的输出结果 总结本文主要介绍了以下几点内容。 Selenium的作用以及在企业级测试框架中的位置。浏览器控制对象驱动 WebDriverDOM元素对象WebElement基本的Test Case 书写关于《Selenium For C#》 系列我计划给大家逐一介绍一些Selenium Driver的基础知识和框架的扩展点。 当然之后会有更多关于测试框架构以及软件构建方面的文章。愿我主保佑我有时间做完这件事情... ... 《Selenium For C#》的相关文章Click here. [小北De编程手记] : Lesson 01 - Selenium For C# 之 环境搭建[小北De编程手记] : Lesson 02 - Selenium For C# 之 核心对象[小北De编程手记] : Lesson 03 - Selenium For C# 之 元素定位[小北De编程手记] : Lesson 04 - Selenium For C# 之 API 上[小北De编程手记] : Lesson 05 - Selenium For C# 之 API 下[小北De编程手记] : Lesson 06 - Selenium For C# 之 流程控制[小北De编程手记] : Lesson 07 - Selenium For C# 之 窗口处理[小北De编程手记] : Lesson 08 - Selenium For C# 之 PageFactory 团队构建说明Demo地址https://github.com/DemoCnblogs/Selenium 如果您认为这篇文章还不错或者有所收获可以点击右下角的【推荐】按钮因为你的支持是我继续写作分享的最大动力 作者小北North 来源http://www.cnblogs.com/NorthAlan 声明本博客原创文字只代表本人工作中在某一时间内总结的观点或结论与本人所在单位没有直接利益关系。非商业未授权贴子请以现状保留转载时必须保留此段声明且在文章页面明显位置给出原文连接。 转载于:https://www.cnblogs.com/NorthAlan/p/5156234.html