首页 > 解决方案 > 如何在c#中使用硒访问li元素的子节点的文本列表

问题描述

访问 li 元素的子节点时出现问题。希望打印出列表中的所有文本(作为网页上的下拉菜单)。但是所有文本都在 a>(第三个 a> 标签)标签下的 li 元素内。

这是我正在尝试使用的 DOM 结构的示例。这是给我的,我没有改变的余地。

<div class="navbar-collapse collapse" id="navbar-mobile">
        <ul class="nav navbar-nav">
            <li data-ng-show="!vm.inIdentity" class="dropdown width-250 
             open">
                <a href="" class="dropdown-toggle ng-binding" data- 
                 toggle="dropdown" aria-expanded="true">
                    <i class="icon-database position-left"></i> Select a 
                    repository <span class="caret"></span>
                </a>
                <ul class="dropdown-menu width-250 overflow-auto" 
                 style="max-height: 500px">
                    <li class="dropdown-header">Repositories</li>
                    <!-- ngRepeat: repository in vm.repositories --><li 
                     data-ng-repeat="repository in vm.repositories" 
                      class="ng-scope" style="">
                        <a href="" data-ng- 
                        click="vm.selectRepository(repository)" 
                        class="ng- 
                        binding"><i class="icon-database4"></i> **Akzo 
                        Nobel**</a>
                    </li><!-- end ngRepeat: repository in vm.repositories 
                          --><li data-ng-repeat="repository in 
                           vm.repositories" class="ng-scope">
                        <a href="" data-ng- 
                        click="vm.selectRepository(repository)" 
                        class="ng-binding"><i class="icon-database4"></i> 
                        AltAir Paramount</a>
                    </li><!-- end ngRepeat: repository in vm.repositories 
                    -->


       IWebElement dropdown = driver.FindElement(By.XPath("//* 
           [@id='navbar-mobile']/ul[1]/li[1]/ul/li[2]/a"));

        Console.WriteLine(dropdown.Text);
        IList <IWebElement> ele = 
        dropdown.FindElements(By.XPath("//li"));


        foreach (var li in ele)
        {

            Debug.WriteLine(li.Text);

        }//end foreach loop

我期待这些值打印出来。“Akzo Nobel”、“AltAir Paramount”等值位于 li 元素和 a> 标签下。但由于某种原因,我只能在调试器窗口中看到“选择存储库”的文本。

标签: c#listselenium-webdriverdomxpath

解决方案


推荐阅读