0

我正在将我们的 Selenium 测试迁移到 WebDriver,并且有一个测试使用 jQuery 来确定某个位置有多少元素。此代码在 Selenium1 上运行良好,但不适用于 WebDriver。当我说“它不工作”时,我的意思是它返回一个非常大且丑陋的null而不是所需的 3 作为字符串。但是,如果我使用 Selenium1 运行它,我会得到所需的 3 作为字符串。

我用谷歌搜索,但我没有找到任何可以帮助解决这个问题的东西。

这些示例不是真正的代码,它们只是示例。如果我在 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:根据我的文件系统,我是在今年三月初左右下载的,不知道如何获得它的修订号。

jQuery:1.6.2

提前感谢您的帮助!

4

1 回答 1

1

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

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

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

于 2012-05-08T14:06:57.670 回答