jquery - 如何将 JQuery 定位器添加到 Selenium 远程控制

标签 jquery selenium css-selectors

我一直很高兴地将 XPath 与 Selenium 一起使用,甚至将 getEval 与 Javascript 一起使用,但一位同事说,如果能够在 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 命令行工具来更新下载的 selenium 服务器 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>

关于jquery - 如何将 JQuery 定位器添加到 Selenium 远程控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814007/

相关文章:

python - 如何从这个亚马逊模板中提取平均星级?(python,网络抓取)

css - 使用 CSS 定位 SVG

jquery - 使用 jQuery 选择器选择有 child 但没有孙子的元素

html - 如何在 Selenium WebDriver 中获取单个文本节点

html - 当父 div 有多个类时定位嵌套 div

javascript - 如何知道一个元素是否对用户可见?

javascript - 将 div 展开到全屏

javascript - 将表注入(inject)特定类

javascript - 如何覆盖闭包内的函数?

java - 获取Firefox驱动后不执行语句