如何在C#中使用硒访问li元素的子节点的文本列表

时间:2019-04-18 20:27:03

标签: c# list selenium-webdriver dom xpath

访问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

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

0 个答案:

没有答案