Как получить доступ к списку текста дочернего узла элемента li с помощью селена в C # - PullRequest
0 голосов
/ 18 апреля 2019

Проблемы с доступом к дочернему узлу элемента li.Нужно распечатать весь текст в списке (который действует как выпадающий список на веб-странице).Но весь текст находится внутри элемента li под тегом a> (третий тег a>).

Вот пример структуры 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>.Но по какой-то причине я вижу только текст «Выбрать репозиторий» только в окне отладчика.

...