使用jquery和selenium IDE 1.0.8获取元素

时间:2010-11-15 15:05:32

标签: jquery selenium selenium-ide

我正在尝试使用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 

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

为什么它不起作用?

编辑: 或者,例如,您可以给我代码如何在stackoverflow的主页上获取第一个对象的ID和JAVA标记。<​​/ p>

标签:

<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

6 个答案:

答案 0 :(得分:8)

根据其他帖子,我尝试了以下内容并且有效。

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

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

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

答案 1 :(得分:7)

要在Selenium IDE中使用jQuery,它的位置如下。 (确保在页面中加载了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>

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


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

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

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

答案 2 :(得分:0)

尝试使用jQuery代替$()。美元符号在硒中有不同的含义。

修改

据我所知,你不能使用jQuery来选择元素。谷歌的搜索没有任何结果。只需使用Xpath。

答案 3 :(得分: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>

正如您所看到的那样,使用带有JavaScript表达式结果的商店,在表达式周围添加javascript{}

使用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-released/

答案 4 :(得分:0)

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

答案 5 :(得分:0)

请尝试German Rumm's blog

中的说明
  

首先,下载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,选项 - &gt;选项...并将sizzle.js和user-extensions.js添加到“Selenium Core扩展”中   重新启动Selenium IDE(只需关闭它的所有实例并再次打开它),现在你可以在任何地方使用sizzle =(locator),其中需要“locator”

你的选择器看起来像:

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

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

css=cssSelector