在Selenium RC中使用自定义定位器函数调用自定义断言函数(Python)
我在user-extensions.js里写了一个自定义的断言函数,这个函数用来找到页面上的某个特定元素,使用的是我自己实现的定位函数,也在user-extensions.js里。
不想详细讲太多,我需要这个自定义的定位函数,因为我想在页面的不同命名空间中找到一个元素,而Selenium好像不支持这种情况。
当我从Selenium IDE调用这个自定义的断言函数时,它会“隐式”地使用自定义的定位函数来查找我想要的元素,断言也能正常工作。这里的“隐式”意思是,我用一个目标“abc=...”来调用断言函数,Selenium IDE就知道应该用locateElementByAbc这个定位函数来查找特定的元素。
但是,当我从Selenium RC(Python)调用同样的自定义断言函数时,使用Python的do_command函数,似乎没有隐式调用自定义的定位函数,结果找不到那个元素。
我该怎么让我的Selenium RC Python脚本使用locateElementByAbc函数呢?需要注意的是,user-extensions.js在启动Selenium服务器时就已经加载了,所以这一部分是正常的。断言函数也可以通过Python的Selenium do_command函数来调用。
谢谢你的帮助,非常感谢!
1 个回答
这个问题很可能是因为你自定义的定位函数(LocateElementByMyprefix()
)没有被注册。Selenium RC在设置用户扩展时(也就是user-extension.js)和Selenium IDE的方式稍有不同,时间上的差异可能会影响到它的工作。你可以尝试在定义完你的函数后,调用一下selenium.browserbot._registerAllLocatorFunctions()
。