10

我正在尝试使用 jquery 和 Selenium IDe 1.0.8 获取元素。

<td>storeValue</td>
<td>$('#result').find('img').filter('[alt=&quot;NameOfPhoto&quot;]').eq(0)</td>
<td></td>

在日志中我得到

[error] Element $('#result').find('img').filter('[alt="NameOfPhoto"]').eq(0) not found 

当我把这个命令放在萤火虫中时,我得到了这个元素:/

为什么它不起作用?

编辑:或者,例如,您可以给我代码如何在 stackoverflow 的主页上使用 JAVA 标记获取第一个对象的 id。

标签:

<a rel="tag" title="show questions tagged 'java'" class="post-tag" href="/questions/tagged/java">java</a>

示例结果来自:

<div id="question-summary-4303985" class="question-summary narrow">

是:

question-summary-4303985
4

6 回答 6

9

根据其他帖子,我尝试了以下方法并且它有效。

将以下代码添加到 user-extensions.js:

function jQuery (selector)
{
    return selenium.browserbot.getUserWindow().jQuery(selector);
}

然后,您可以使用关键字 jQuery 而不是 $ 来访问任何 jQuery 函数。只需确保您正在测试的页面引用了 jQuery js 文件。

于 2011-07-12T08:46:10.733 回答
8

要将 jQuery 与 Selenium IDE 一起使用,它的位置如下。(确保在您的页面中加载了 jQuery)

this.page().getCurrentWindow().wrappedJSObject.jQuery()

您可以将函数位置存储在 Selenium 变量中。

<tr>
    <td>store</td>
    <td>this.page().getCurrentWindow().wrappedJSObject.jQuery</td>
    <td>jq</td>
</tr>

然后你可以在你的测试中使用它们,比如:

<tr>
    <td>assertEval</td>
    <td>${jq}('div').attr('foo')</td>
    <td>bar</td>
</tr>

以上匹配<div foo='bar' />使用 jQuery。


编辑:或者,您可以通过以下方式访问它:

this.browserbot.getUserWindow().jQuery
selenium.browserbot.getUserWindow().jQuery

替代来源:http ://cssgreut.wordpress.com/2010/12/20/run-selenium-ide-tests-with-jquery-selectors/

于 2011-03-22T08:11:33.897 回答
0

尝试使用jQuery而不是$(). 美元符号在硒中具有不同的含义。

编辑

据我所知,您不能使用 jQuery 来选择元素。谷歌搜索一无所获。只需使用 Xpath。

于 2010-11-17T22:57:01.403 回答
0

你在 Selenium jar 中捆绑了 jQuery 吗?如果没有,则不能使用该语法。

于 2010-11-30T11:23:02.957 回答
0

使用 JavaScript 存储当前日期并将其回显到 Selenium 日志控制台的示例${}

<tr>
    <td>store</td>
    <td>javascript{new Date}</td>
    <td>foo</td>
</tr>
<tr>
    <td>echo</td>
    <td>${foo}</td>
    <td></td>
</tr>

如您所见,将 store 与 JavaScript 表达式的结果一起使用 add javascript{}arround 表达式。

您的示例javascript{storedVars['bar']}用于输出存储的变量。

<tr>
    <td>store</td>
    <td>javascrip{jQuery('#result').find('img').filter('[alt="NameOfPhoto"]').eq(0)}</td>
    <td>bar</td>
</tr>
<tr>
    <td>open</td>
    <td>javascript{storedVars['bar']}</td>
    <td></td>
</tr>

Selenium 中的 JavaScript:

您可以在javascript{alert('hello')}值字段中运行 JavaScript/jQuery。

Selenium 还有一个扩展来显示存储了哪些变量:http ://reallysimplethings.wordpress.com/2010/09/28/the-stored-variables-viewer-plugin-for-selenium-ide-v1-3-发布/

于 2010-11-23T15:45:44.587 回答
0

试试German Rumm 博客中的说明

首先,下载Sizzle,它是 jQuery 的选择器引擎,然后将 sizzle.js 解压到一个方便的位置。
其次,创建空的 user-extensions.js 文件。顺便说一下,名字可以是任何你想要的。
将此添加到 user-extensions.js

PageBot.prototype.locateElementBySizzle = function(locator, inDocument) {
  var results = [];
  window.Sizzle(locator, inDocument, results);
  return results.length > 0 ? results[0] : null;
}

第三,转到 Selenium IDE,Options -> Options... 并将 sizzle.js 和 user-extensions.js 添加到“Selenium Core extensions”。
重新启动 Selenium IDE(只需关闭它的所有实例并再次打开它),现在您可以在任何需要“定位器”的地方使用 sizzle=(locator)

您的选择器将如下所示:

#result img[alt="NameOfPhoto"]:eq(0)

JQuery 选择器主要来自 CSS 选择器,因此您也可以在 selenium 中使用它们

css=cssSelector

于 2011-04-09T09:28:29.860 回答