`
sigmaIsland
  • 浏览: 9619 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Selenium自动化,加速IE浏览器自动化执行效率

阅读更多

加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

技术背景
      在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链接等。比如在用户名输入框和密码输入框输入正确的用户名和密码,然后点击登录按钮进行登录。在Selenium自动化中,Selenium提供多种API来对HTML元素进行操作,对于每个HTML元素,需要一个可以标识它的标识符,在Selenium中称之为定位器,Selenium支持多种不同类型的定位器,有标识符,Id,Name, DOM Locator,XPath Locator, 以及CSS Locator等。本文主要讨论DOM, XPATH,以及CSS定位器在不同的浏览器中的使用的优缺点以及注意事项。

问题与挑战
      针对一个使用Selenium RC的Web自动化项目,在项目初期在Firefox上采用了比较灵活,简洁的XPath定位器来对应用中的对象进行操作。但在项目开展到1/3时,增加了对IE浏览器支持的需求。在使用现有基于XPath的脚本运行后,发现脚本运行时间呈现几十上百倍地增加,在Firefox上执行花费1分钟的脚本在IE上会花费10~20分钟,甚至更长的时间。该问题就导致了在IE上直接运行之前已完成脚本变得不可行。要了解到Firefox支持原生的Xpath解析功能,而IE不支持原生的Xpath解析,而是基于一个外部的javascript library(Google's library)来进行Xpath解析。由于需求是要求脚本能够同时支持Firefox和IE浏览器,所以需要寻求另外一种方式来使得在不同浏览器上调用Selenium API所执行时间相当。

解决方案
      在Selenium RC 0.9.2中,用以解析XPath的javascript库在IE上执行的时间增加了脚本执行时间,而且在越复杂的页面中,在IE上调用API所占用的时间越长。于是决定换用其它类型的定位器,由于该被测Web应用中大多数HTML元素未指定有ID和Name属性,所以在这里首先采用比较灵活的Dom定位器进行测试

使用Dom定位器来对HTML元素定位,该Locator表达式需要以“dom=” 或者是“document.”开头的形式,Selenium会执行这段javascript片断来最终地取得我们需要访问的HTML元素,由此在Dom定位器中,可以使用Web页面中的DOM对象来获取文档内的所有HTML元素。 需要注意一点的是,Selenium执行这段javascript片断的时候,是采用整段javascript脚本执行的值,也即是在这段javascript片断中最后一个表达式的值。

使用Dom定位器后,在IE上脚本执行的时间比使用Xpath的时候短很多,基本上跟在Firefox上面所花费的时候基本相当。

请参照以下的一个性能对照表:

性能对照

 

    依照以上表格,不难发现,使用XPath定位器,能使得定位器比较简单,而对于比较复杂的对象(无IE和Name的动态对象)在使用Dom定位器则非常的复杂。由于XPath在IE下的效率极其低下,也只能使用Dom定位器来支持IE浏览器。

    在Selenium RC1.0.1版本发布后,Selenium增加了一个新的Xpath的javascript库:Cybozu Labs' faster library。

 

selenium performance result for xpath and dom locator on IE

    由以上表格可见,在IE下使用了Cybozu Lab的XPath library后,执行效率有了很大提升,基本上可以与使用Dom定位器相当。通过比较,在新的项目中使用Selenium来进行Web自动化开发,使用XPath定位器,可以使得定位器本生比较简洁,而且也得到较高执行效率。

    在Web开发中,有较多的人使用CSS来优化Web页面效果。而Selenium也支持CSS定位器,在IE和Firefox浏览器下,使用CSS定位器时,执行的效率与XPath基本相当,而且CSS定位器同样与XPath比较简洁。所以对CSS比较熟悉的开发人员也可以使用CSS定位器来进行Selenium Web自动化开发。

   终上所述,在新的Web自动化项目中推荐使用XPATH和CSS定位器,请参考下面的对照表格。

selenium自动化中不同locator优劣分析

环境设置描述
在需要运行Web浏览器的主机上运行Selenium RC服务,记主机1。
Web自动化程序可以运行在主机1上,也可以运行在任何一台可与主机1进行网络通信的其它主机上,

使用工具简介
Selenium RC服务程序,需要使用JDK/JRE来运行Selenium RC服务。
支持HTTP请求的程序语言,Perl, Ruby, Python, Java, C#等等。
支持所有Javascript-based浏览器。

分享到:
评论
2 楼 luckyami 2010-07-15  
Selenium还是无法较好的解决Timing Issue的问题~~个人感觉走UI Automation就是条死胡同...
1 楼 liudun 2010-06-23  
很好的经验,收藏一下先。我也在项目中用selenium来做功能流程和浏览器兼容的自动化测试,感觉还不错。

不过发现这是一广告帖后,我还是要鄙视一下作者。

相关推荐

    Selenium+谷歌/火狐/IE浏览器+driver下载

    总之,这个压缩包提供了一站式的解决方案,帮助开发者快速配置Selenium3.14与最新版Chrome、Firefox和IE浏览器的自动化测试环境。通过合理利用这些工具,你可以高效地进行Web应用程序的功能测试、性能测试以及回归...

    php-selenium自动化测试包

    3. **IEDriverServer.exe**:这是Internet Explorer浏览器的Selenium WebDriver驱动,用于在IE浏览器上进行自动化测试。尽管现在IE的使用率较低,但在某些场景下仍需要进行兼容性测试。 4. **selenium-server-...

    selenium 针对IE的驱动程序

    2. 编写测试脚本,引入Selenium库,实例化IE浏览器对象。 3. 使用Selenium API执行测试步骤,如打开网页、输入数据、点击按钮等。 4. 运行测试,观察和记录结果,根据需要调试或优化脚本。 总结,Selenium与32位IE...

    使用Python进行Selenium自动化测试.docx

    在Python IDE中运行模块,Selenium会调用IE浏览器执行脚本,同时命令行窗口会显示Selenium Server的操作过程。 若要切换到Firefox,我们需要修改代码中的`"*iexplore"`,替换为Firefox的实际路径,例如`"*custom D:...

    自动化测试-谷歌IE驱动

    谷歌IE驱动是这个框架的一个特殊实现,它使得Selenium能够控制IE浏览器进行自动化测试。 **使用谷歌IE驱动** 1. **安装**:首先需要下载并安装适用于当前操作系统的谷歌IE驱动,这通常是一个可执行文件。 2. **配置...

    Selenium各大浏览器驱动【谷歌chrme、火狐Firefox、IE浏览器】

    3. **IE浏览器驱动**: Internet Explorer的驱动是`IEDriverServer`。下载地址为:http://selenium-release.storage.googleapis.com/index.html。注意,IE驱动需要特定的配置,比如启用“兼容性视图设置”和“增强...

    selenium浏览器驱动下载

    附件中的`Snipaste_2023-08-17_11-47-35.png`可能是截取的Selenium测试过程中的屏幕快照,它可能展示了如何在操作界面中配置驱动路径或执行自动化测试的步骤。如果需要进一步理解,可以参考图片中的信息。 总之,...

    selenium_webdriver(python)第一版.pdf

    作者虽自称在Selenium自动化方面是初学者,但通过自身的学习经验,为读者提供了宝贵的学习路径。 文档首先介绍了Selenium WebDriver的基本概念。Selenium WebDriver是一个开源的自动化测试工具,允许开发者模拟用户...

    selenium谷歌chrome、火狐firefox,IE浏览器驱动

    Internet Explorer的驱动程序是IEDriverServer,它是Selenium针对IE浏览器的特定实现。与Chrome和Firefox不同,配置IEDriverServer稍微复杂一些,因为它需要特定的设置才能使Selenium与IE协同工作。例如,可能需要...

    selenium+junit+hudson自动化测试初探

    【Selenium自动化测试初探】 本文旨在探讨如何利用Selenium、JUnit和Hudson构建一个自动化测试框架。Selenium是一款强大的开源Web功能测试工具,支持多种编程语言,如Ruby、Python、Java、Perl和C#。它能直接在...

    selenium3常用浏览器驱动

    这个驱动程序使Selenium3能够与IE浏览器通信,执行自动化任务。配置和使用方式与ChromeDriver类似,确保将其添加到系统路径或在代码中指定路径。需要注意的是,由于IE浏览器的特殊性,可能需要处理更多的兼容性和...

    selenium3.141-IE驱动

    总结,Selenium 3.141的IE驱动是进行IE浏览器自动化测试的重要工具,正确配置和使用它可以高效地完成Web应用的功能验证和性能测试。了解其工作原理和配置方法,有助于我们在测试过程中避免不必要的困扰,提高工作...

    基于Selenium的软件自动化测试分析.pdf

    通过使用Selenium进行自动化测试,可以显著提高测试效率,减少人工成本,并通过自动化脚本的编写和执行来缩短软件的开发与测试周期。此外,Selenium的技术演进,如Selenium IDE的便捷、Selenium Server的分布式测试...

    selenium IE3 驱动

    而IEDriverServer是Selenium针对IE浏览器的WebDriver实现,它作为一个服务器进程运行,接收来自测试脚本的命令,并将其转化为IE浏览器能理解的命令。 **4. 安装和配置 IEDriverServer** 在使用Selenium进行IE自动...

    selenium2初学者快速入门

    - IEDriverServer (IE Driver): `IEDriverServer_Win32_2.45.0.zip`,适用于IE浏览器。 - ChromeDriver (Chrome Driver): 需要根据Chrome浏览器的版本下载相应的驱动程序。 #### 六、结语 通过本文的介绍,初学者...

    selenium浏览器driver(含火狐、谷歌、IE)

    4. **IE浏览器驱动(IEDriverServer)**:对于较老的IE浏览器,Selenium提供了IEDriverServer。这个驱动程序使得Selenium测试能够与IE浏览器进行交互。设置过程与GeckoDriver和ChromeDriver类似,需要将...

    Selenium chrome和iE webdriver

    值得注意的是,由于IE浏览器的特殊性,配置和使用IEDriverServer可能比ChromeDriver更为复杂,包括可能需要调整IE浏览器的安全设置和启用特定的兼容模式。 在编写Selenium测试脚本时,需要导入相应的WebDriver模块...

    IEDriverServer

    IEDriverServer是Selenium自动化测试框架...总之,IEDriverServer是Selenium自动化测试中不可或缺的一部分,尤其在处理IE浏览器自动化任务时。理解和熟练掌握它的使用方法对于提升Web应用测试的效率和覆盖率至关重要。

    selenium(IED与全套jar包)

    在这个压缩包中,我们找到了selenium IED 2.5版本,这是一个专为IE浏览器设计的Selenium组件。同时,这个包还包含了Selenium所需的全套jar包,这对于开发和运行Selenium测试脚本至关重要。 Selenium Client & ...

Global site tag (gtag.js) - Google Analytics