我一直很高兴地将XPath与Selenium一起使用,甚至将getEval与Java脚本一起使用,但是一位同事说,能够在Selenium中使用JQuery选择器不是很好。
我已经用谷歌搜索过,但是找不到适合我的文章。任何人都可以提供有关如何使用JQuery语法从selenium中提取doc元素及其各自值的全面指南。
我正在使用C#编写我的selenium测试,因此,如果可以从C#角度来看任何示例,那就太好了。
谢谢
Karl Swedberg撰写了一篇有关它的出色博客文章,该文章可以在http://www.learningjquery.com/2009/04/better- stronger-safer-jquerify- bookmarklet中找到
我们对此进行了调整,基本上在Selenium Server jar文件中,我们修改了RemoteRunner.html以包含jquery JavaScript(从http://code.jquery.com/jquery- latest.min.js获得):
<script language="JavaScript" type="text/javascript" src="jquery.min.js"></script> <script language="JavaScript" type="text/javascript"> function openDomViewer() { var autFrame = document.getElementById('selenium_myiframe'); var autFrameDocument = new SeleniumFrame(autFrame).getDocument(); this.rootDocument = autFrameDocument; var domViewer = window.open(getDocumentBase(document) + 'domviewer/domviewer.html'); return false; } </script>
然后,为了使其能够在Selenium中使用,我们添加了定位策略:
mySelenium.addLocationStrategy("jquery", "var loc = locator; " + "var attr = null; " + "var isattr = false; " + "var inx = locator.lastIndexOf('@'); " + "if (inx != -1){ " + " loc = locator.substring(0, inx); " + " attr = locator.substring(inx + 1); " + " isattr = true; " + "} " + "var found = jQuery(inDocument).find(loc); " + "if (found.length >= 1) { " + " if (isattr) { " + " return found[0].getAttribute(attr); " + " } else { " + " return found[0]; " + " } " + "} else { " + " return null; " + "}" );
请注意,上面添加的定位器策略是用Java编写的,但是它只是一个字符串,因此应在C#中轻松复制。JQuery确实使事情变得更快,尤其是在Internet Explorer中!
要修改jar,可以使用java命令行工具更新下载的硒服务器jar。在与名为“ core”的jar相同级别的文件夹中,然后将修改后的RemoteRunner.html和jquery.min.js文件放在此处。然后运行类似:
jar -uf selenium-server-standalone-2.0b3-APT.jar core\RemoteRunner.html jar -uf selenium-server-standalone-2.0b3-APT.jar core\jquery.min.js
如果jar不在您的路径中,则可以使用完整路径,例如,在Windows上,您可以使用以下命令执行它:
"C:\Program Files\Java\jdk1.6.0_22\bin\jar.exe" <arguments>