Selenium C # для выбора UL IL и значения метки - PullRequest
0 голосов
/ 10 января 2019

Я новичок в использовании Selenium в C #. Я пытаюсь получить значение из списка UL. Вот код HTML.

     <div class="reg-field__popup">
   <div class="form__popup-error form__popup-text" data-t="login-error" role="alert">
      <div class="form__login-suggest">
         <strong class="suggest__status-text error-message">You must select a&nbsp;username</strong>
         <div>
            <div class="suggest__logins">
               <strong class="suggest__status-text" tabindex="4">Available usernames</strong>
               <ul class="logins__list">
                  <li class="registration__pseudo-link">
                     <label for="lill1an.amir" tabindex="0" title="lill1an.amir" data-login="lill1an.amir">
                        <input type="radio" id="lill1an.amir" value="on"><!-- react-text: 1218 -->lill1an.amir<!-- /react-text -->
                     </label>
                  </li>
                  <li class="registration__pseudo-link">
                     <label for="lilli4n.a" tabindex="0" title="lilli4n.a" data-login="lilli4n.a">
                        <input type="radio" id="lilli4n.a" value="on"><!-- react-text: 1222 -->lilli4n.a<!-- /react-text -->
                     </label>
                  </li>

Мне нужно получить значение метки. Результат будет lill1an.amir, lilli4n.a

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Использование:

var ulList = driver.FindElements(By.Xpath('//ul[@class="logins__list"]'))

Затем используйте GetAttribute("value") в цикле for ...

Надеюсь, это вам поможет!

0 голосов
/ 11 января 2019

Согласно HTML для извлечения желаемых текстов, т. Е. lill1an.amir , lilli4n.a из <label>, вы можете использовать следующее решение:

labels = driver.FindElements(By.XPath("//ul[@class='logins__list']//li/label"))
foreach (IWebElement label in labels)
{
    string my_text = field.GetAttribute("for");
    Console.WriteLine(my_text);
}
0 голосов
/ 10 января 2019
var labels = driver.FindElements(By.Xpath("//*[contains(@class, 'logins__list')/li]"))

for (int a = 0; a < labels.Count; a++) {
    Console.WriteLine(labels[a].FindElement(By.Xpath("./label")).GetAttribute("for"))
}

EDIT:

также, это должно работать (спасибо Моше Славину):

for (int a = 0; a < labels.Count; a++) {
    Console.WriteLine(labels[a].FindElement(By.Xpath("./label/input")).GetAttribute("value")) # or GetAttribute("innerHTML")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...