当前位置: 首页 > 面试题库 >

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

奚英朗
2023-03-14
问题内容

我一直很高兴地将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>


 类似资料:
  • 我目前已经在iReport中打开了一个。jasper和。jrxml文件来编辑报告。我实际上只是添加一个新字段来保存变量“email”。 我设置了字段和变量。然而,当我编译时,我得到了这些错误。

  • 我有一个Sinatra应用程序,在Docker中运行良好: 但是当我尝试添加Redis时: Redis似乎没有启动。 那么,将Redis添加到Ruby()Docker容器中的好方法是什么呢?

  • 我很喜欢这个从http://www.jqueryscript.net/time-clock/modern-circular-jquery-countdown-timer-plugin-final-countdown.html下载的倒计时脚本,想把它用到我的wordpress网站上,我读了一些关于如何在wordpress中放入任何脚本的教程,但是我不能完全理解,因为我是新手,你能帮我一步一步地做吗

  • 问题内容: 我有一个运行着某些进程(uwsgi和celery)的docker容器。我想为这些进程以及它们都属于的工作组创建一个celery用户和uwsgi用户,以便分配权限。 我尝试将和添加到我的Dockerfile中,但这会引起问题,因为这些命令会提示您输入(我已在下面的构建中发布了响应)。 将用户添加到Docker容器以便为在该容器中运行的工作人员设置权限的最佳方法是什么? 我的Docker映

  • 我有以下代码: 要添加到这里! 我想在Ext.tree.Panel中添加列“customspinner”,但我得到了未捕获的TypeError:Object[Object Object]没有方法“setSortState”。发生了什么?我终于需要这样的东西了

  • 有这样的东西: 工作正常/图像正常上载comment.php。 下面是相同的表单,但使用了jquery Post。工作正常,但javascript看不到图像... 有什么方法可以在脚本中添加一些我的comment.php会看到的图像吗?