一尘不染

如何将JQuery定位器添加到Selenium Remote Control

selenium

我一直很高兴地将XPath与Selenium一起使用,甚至将getEval与Java脚本一起使用,但是一位同事说,能够在Selenium中使用JQuery选择器不是很好。

我已经用谷歌搜索过,但是找不到适合我的文章。任何人都可以提供有关如何使用JQuery语法从selenium中提取doc元素及其各自值的全面指南。

我正在使用C#编写我的selenium测试,因此,如果可以从C#角度来看任何示例,那就太好了。

谢谢


阅读 325

收藏
2020-06-26

共1个答案

一尘不染

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>
2020-06-26