正确的jQuery代码在webdriver中不起作用

时间:2012-05-08 13:11:45

标签: c# jquery selenium webdriver

我正在将我们的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

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我认为你需要返回值,所以如果上面的代码是正确的:

return window.$("div[id='listOfElements']>div[class='items']>ul[class='items'] li[class*='listedElements']").length;

您只需将返回部分添加到要执行的字符串的前面。