afeng 发表于 2009-8-13 21:10:45

selenium rc的性能问题

前段时间在网上down了一套别人写好的调用selenium rc的程序,不过作者可能为了通用性,用了xpath来定位,而ie对xpath的性能支持实在太差,执行一个命令要1-2秒钟,这样一个窗口有时需要5-10分钟,简直难以忍受,在实习生的怨声载道中,不得不改进方法,于是用dom代替xpath,代码上反而比以前减少了很多,而且1秒钟能执行几十个命令,一个原本需要10分钟的测例现在1分钟就搞定了,效率大大提高,执行用例的人也不再叫慢了,呵呵,其实也蛮简单,大概用了半天时间就搞好了,看来自动化测试里还是有很多东西要学的:)

supermichael 发表于 2009-8-14 10:14:39

楼主简单写个例子吧~

afeng 发表于 2009-8-14 12:10:28

比如xpath=//table[@id='%1$s']//tr[%2$s]//td[%3$s]//input[@type='text' and @name='%4$s']
现在用dom=document.getElementById('%1$s').cells[%2$s]
具体语法可以网上查查,很多帮助的:lol

supermichael 发表于 2009-8-14 12:13:03

回复 3# 的帖子

感谢感谢~

afeng 发表于 2009-8-14 13:50:29

大家互相学习:lol

shanxi 发表于 2009-8-15 20:13:12

xpath 可是SC的标配

真的很慢!?

wendy811110 发表于 2009-8-16 16:55:10

有没有其他更加详细的例子??:lol

park_p 发表于 2009-8-17 11:41:41

还有这一说,以前没考虑过,只是发现一样的代码在firefox下执行速度确实比ie下快很多,原来是xpath影响了解析速度啊?哈哈,照你的说法,用dom方式识别方式在ie下和firefox下执行速度相同么??可是最简单的id=xxxxx这样的选择器,在ie下好像还是明显慢于firefox,这是为啥呢?难道selenium对应id=xxxxx这样的实现不是通过dom的getElementById()而是通过xpath=//xxxx[@id=xxxxx]么?

xiaoshancom 发表于 2009-8-17 12:08:31

xpath 主要用于解析XML结点
跟dom不沾边

park_p 发表于 2009-8-17 12:24:19

是的,xpath是为xml解析用的,可是selenium可以通过xpath来定位元素,估计它是把html当成xml来做的解析吧,具体也不清楚是什么机制,但是selenium确实可以用xpath定位和操作页面元素,新的html规范不是越来越xml化,越来越规范了嘛

xiaoshancom 发表于 2009-8-17 13:21:55

看了下源码,搞清楚了

Selenium IDE录制时生成XHTML文件

见例
//selenium-ide\trunk\src\content\testSuite.js

// TODO make this configurable
TestSuite.header =
    '<?xml version="1.0" encoding="UTF-8"?>\n' +
    '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n' +
      '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n' +
    "<head>\n" +
    '<meta c http-equiv="content-type" />' + "\n" +
    "<title>Test Suite</title>\n" +
    "</head>\n" +
    "<body>\n";

TestSuite.footer =
    "</body>\n</html>\n";

[ 本帖最后由 xiaoshancom 于 2009-8-17 13:24 编辑 ]

afeng 发表于 2009-8-17 14:54:50

ie对xpath的支持不好,而dom的速度要块很多,至于原因没有功夫细究
页: [1]
查看完整版本: selenium rc的性能问题