Текст для IWebElement.Text не возвращен - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть некоторый xpath, который корректно возвращает мне нужные мне узлы, но я не могу получить текст между тегами в Selenium.

Ниже корректно возвращаются 4 узла, которые мне нужны:

var subMenuItems = driver.FindElements(By.XPath("//div[@id='OpenandApply123']//a"));

Однако, когда я делаю следующее, я ничего не получаю для текста, возвращаемого, когда я ожидаю "abc123":

string item1 = subMenuItems[0].Text;

Как мне получить тексты для abc123, def123 et c, возвращенные ?

Полный html ниже, извиняюсь за форматирование:

<div class="subMenu" id="OpenandApply123" role="menu" aria-hidden="false" style="" xpath="1">
                            <table cellpadding="0" cellspacing="0" width="150" role="presentation">

                                    <tbody><tr role="presentation">
                                        <td role="presentation" class="">
                                            <a id="abc.feature_link" href="abc/abc" class="menuItem" target="_top" style="background-position: 4px 2px;">
                                                abc123
                                            </a>


                                        </td>
                                    </tr>

                                    <tr role="presentation">
                                        <td role="presentation" class="">
                                            <a id="def.feature_link" href="abc/Feature/def" class="menuItem" target="_top" style="background-position: 4px 2px;">
                                                def123
                                            </a>


                                        </td>
                                    </tr>

                                    <tr role="presentation">
                                        <td role="presentation">
                                            <a id="ghi.feature_link" href="abc/Feature/ghi" class="menuItem" target="_top" style="">
                                                ghi123
                                            </a>


                                        </td>
                                    </tr>

                                    <tr role="presentation">
                                        <td role="presentation">
                                            <a id="klm.feature_link" href="abc/klm" class="menuItem" target="_top" style="">
                                                klm123
                                            </a>


                                        </td>
                                    </tr>

                            </tbody></table>
                        </div>

1 Ответ

1 голос
/ 14 апреля 2020

Я бы предложил вызвать WebDriverWait и дождаться VisibilityOfAllElementsLocatedBy () и следующего xpath.

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.XPath("//td[@role='presentation']//a")));
var subMenuItems = driver.FindElements(By.XPath("//td[@role='presentation']//a"));
string item1 = subMenuItems[0].Text;

Или

string item1 = subMenuItems[0].GetAttribute("textContent");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...