硒C#选择UL IL和标签值

时间:2019-01-10 11:58:30

标签: c# list selenium selenium-webdriver webdriver

我是在C#中使用Selenium的初学者。我正在尝试从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.amirlilli4n.a

3 个答案:

答案 0 :(得分:1)

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"))
}

编辑:

这也应该起作用(感谢Moshe Slavin):

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

答案 1 :(得分:0)

使用:

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

然后在for循环中使用GetAttribute("value") ...

希望这对您有帮助!

答案 2 :(得分:0)

根据从<label>中提取所需文本(即 lill1an.amir lilli4n.a )的HTML,您可以使用以下解决方案:

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);
}