我正在尝试使用jquery和Selenium IDe 1.0.8获取元素。
<td>storeValue</td>
<td>$('#result').find('img').filter('[alt="NameOfPhoto"]').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
答案 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)
首先,下载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