在selenium webdriver上的javascript中使用xpath()计算元素数

在selenium webdriver上的javascript中使用xpath()计算元素数,javascript,xpath,selenium-webdriver,Javascript,Xpath,Selenium Webdriver,我正在使用javascript在SeleniumWebDriver中编写测试脚本 我也在用摩卡咖啡和幻影咖啡。 我想计算具有特定id的中的总数 我正在使用以下脚本: var majorSize = driver.findElements(By.xpath("//ul[contains(@id, 'side-menu')]/li[not(contains(@class, 'nav-header'))]")).size(); console.log(majorSize); 我使用了来自 但我得到了

我正在使用javascript在SeleniumWebDriver中编写测试脚本

我也在用摩卡咖啡和幻影咖啡。

我想计算具有特定id的
中的
  • 总数

    我正在使用以下脚本:

    var majorSize = driver.findElements(By.xpath("//ul[contains(@id, 'side-menu')]/li[not(contains(@class, 'nav-header'))]")).size();
    console.log(majorSize);
    
    我使用了来自

    但我得到了一个错误:

    TypeError: undefined is not a function
    
    在javascript中,我还可以使用以下代码:

    driver.findElements(By.xpath("//ul[contains(@id, 'side-menu')]/li[not(contains(@class, 'nav-header'))]")).then(function(majorSize)
    {
       console.log(majorSize.legth)
    });
    console.log(majorSize.legnth);
    
    上述脚本仅在then()函数中具有majorLink作用域。所以不能在外面用。但我也需要在外面用

    如果我定义了
    var majorSize
    ,那么它也只是在then()函数外显示0

    我做错了什么

    以下是HTML代码:

    <ul id="side-menu" class="nav">
        <li class="nav-header">
        <img class="logo" alt="Track Revenue" src="/images/3c4939d.png">
        <div class="logo-element"> TR </div>
        </li>
        <li class="">
        <a href="#home">
        <i class="fa fa-bolt"></i>
        <span class="nav-label">Tr Admin Menu</span>
        <span class="fa arrow"></span>
        </a>
        <ul class="nav nav-second-level collapse" aria-expanded="false" style="height: 0px;">
            <li>
            <a href="/admin/user/">All Users</a>
            </li>
            <li>
            <a href="/admin/company/">All Companies</a>
            </li>
            <li>
            <a href="/admin/device/">Devices</a>
            </li>
            <li>
            <a href="/admin/email/">Send Email</a>
            </li>
            <li>
            <a href="/admin/impersonate">Impersonate User</a>
            </li>
            <li>
            <a href="/admin/encrypttest">Test Encryption</a>
            </li>
        </ul>
        </li>
        <li class="">
        <a href="#home">
        <i class="fa fa-th-large"></i>
        <span class="nav-label">Campaigns</span>
        <span class="fa arrow"></span>
        </a>
        <ul class="nav nav-second-level collapse" aria-expanded="false" style="height: 0px;">
        <li>
        <a href="http://demotest.com.co/main/account/campaign_overview.php">Overview</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/campaign_update_cpc.php">CPC Update</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/campaign_update_subids.php">SubID Update</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/campaign_v2.php">Add Campaign</a>
            </li>
        </ul>
        </li>
        <li>
        <a href="#home">
        <i class="fa fa-bar-chart-o"></i>
        <span class="nav-label">Stats</span>
        <span class="fa arrow"></span>
        </a>
        <ul class="nav nav-second-level collapse">
            <li>
            <a href="http://demotest.com.co/main/account/stats_campaign_v2.php">Campaign Stats</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/stats_week_day_v2.php">Week / Day Parting Stats</a>
            </li>
        </ul>
        </li>
        <li>
        <a href="#home">
        <i class="fa fa-files-o"></i>
        <span class="nav-label">Reports</span>
        <span class="fa arrow"></span>
        </a>
        <ul class="nav nav-second-level collapse">
            <li>
            <a href="http://demotest.com.co/main/account/report_custom.php">Custom Data Reports</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/report_subid.php">SubID Analysis Report</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/completed_report.php">Scheduled Reports</a>
            </li>
        </ul>
        </li>
        <li>
        <a href="#home">
        <i class="fa fa-cog"></i>
        <span class="nav-label">Settings</span>
        <span class="fa arrow"></span>
        </a>
        <ul class="nav nav-second-level collapse">
            <li>
            <a href="/profile/">Account</a>
            </li>
            <li>
            <a href="/plan/">Plan Management</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/settings_groups.php">Campaign Groups</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/settings_network.php">Affiliate Networks</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/settings_sources.php">Traffic Source</a>
            </li>
            <li>
            <a href="/manage/user/">Manage Users</a>
            </li>
            <li>
            <a href="/manage/company/">Manage Company</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/settings_rules.php">Blocking & Filter Rules</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/domains.php">Domains</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/campaign_archive.php">Campaign Maintenance</a>
            </li>
        </ul>
        </li>
    </ul>
    
    • TR

    如果我理解正确,您需要所有
    LI
    s(并且只有
    LI
    s)都是
    UL
    的子菜单
    id=side menu
    。对吗?这是用Java编写的,但希望您能翻译它

    List<WebElement> lis = driver.findElements(By.cssSelector("#side-menu > li"));
    System.out.println(lis.size());
    
    List lis=driver.findElements(By.cssSelector(“#side menu>li”);
    System.out.println(lis.size());
    

    此CSS选择器意味着查找具有子菜单
    LI
    s的侧菜单ID(#)的元素。他们是直系子女,不是后代。

    我已经试过了,先生。其显示未定义@Har07你能不能把那个html代码和问题放在一起?这在javascript下吗?iframe?@HelpingHands,我已经添加了HTML脚本,先生。没有帮助:(我真的被卡住了。你是否使用了try&catch来获得确切的异常?请在你下表决时留下评论。如果你下表决是因为它不是phantomJS,这并不是很难翻译。它只是复制/粘贴CSS选择器,可能会将
    var
    放在
    列表
    所在的位置…哦,并将
    .length
    而不是
    .size()
    。我没有否决你的答案。顺便说一句,我也用了.lenth。它也表示未定义。你用
    .lenth
    …你真的试过
    .length