我正在将我们的Selenium测试迁移到WebDriver,并且有一个测试使用jQuery来确定某个地方有多少元素。这段代码适用于Selenium1,但它不能与WebDriver一起使用。当我说“它不起作用”时,我的意思是它返回一个非常大且丑陋的 null 而不是所需的3作为字符串。但是,如果我使用Selenium1运行它,而不是将所需的3作为字符串运行。
我用Google搜索,但我找不到任何有助于解决此问题的内容。
示例不是真正的代码,它们只是示例。如果我在firebug中运行原始代码,它总是正常工作。
html代码:
<div id='listOfElements'>
<div class='items'>
<ul class='items'>
<li class='listedElements'>elem 1</li>
<li class='listedElements'>elem 2</li>
<li class='listedElements'>elem 3</li>
<li class='listedElements'>elem 4</li>
</ul>
</div>
</div>
javascript代码:
window.$("div[id='listOfElements']>div[class='items']>ul[class='items'] li[class*='listedElements']").length
c#代码:
public string GetEval(string script)
{
var js = _driver as IJavaScriptExecutor;
return (string) js.ExecuteScript(script);
}
此方法始终返回null,但是我需要“listeElements”的数量。
版本:c#3.5
Webdriver:根据我的文件系统,我在今年3月初开始下载它,我不知道如何获得它的修订号。
jQuery:1.6.2
提前感谢您的帮助!
答案 0 :(得分:1)
我认为你需要返回值,所以如果上面的代码是正确的:
return window.$("div[id='listOfElements']>div[class='items']>ul[class='items'] li[class*='listedElements']").length;
您只需将返回部分添加到要执行的字符串的前面。