Как извлечь текст метки пользовательского интерфейса с помощью селена webdriver - PullRequest
0 голосов
/ 17 мая 2018

HTML выглядит следующим образом:

<div id="field-container" class="field-container center">
  <form id="param-list" class="ui form">
    <div>
      <div class="field-group"><label class="input-label" data-tooltip="Australia, Hello" data-position="right center">Beta</label>
        <div class="field">
          <div class="ui input"><input id="11" value="123" type="text"></div>
        </div>
      </div>
      <div class="field-group"><label class="input-label" data-tooltip="Australia, USA" data-position="right center">Carbon Reduction</label>
        <div class="field">
          <div class="ui input"><input id="12" value="" type="text"></div>
        </div>
      </div>

У меня есть выше HTML для моего веб-интерфейса, я пытаюсь прочитать все поля внутри (id = "param-list") и получить имя, которое является бета-версии иСокращение углерода, а также данные для «data-tooltip».Вот то, что я пытаюсь сделать, но я не могу его вернуть.

   public static List<string> GetFieldsName()
        {
            List<string> expected = new List<string>();
            IWebElement elament = driver.FindElement(container);  //container = By.Id("param-list");
            IList<IWebElement> fieldNames = elament.FindElements(FiledName); //By.ClassName("field");
            foreach (IWebElement fieldname in fieldNames)
            {
                IList<IWebElement> names = fieldname.FindElements(Inputlable); //By.ClassName("input");
                foreach (var name in names)
                {
                    expected.Add(name.GetAttribute("tooltip"));

                }
            }
            return expected;
        }

когда я делаю это, все, что я получаю, равно NULL, и я не уверен, как выбрать Имя, которое является Beta и Углеродное Сокращение сверху HTML.

Ответы [ 2 ]

0 голосов
/ 21 августа 2018

Код ниже вернет вам всплывающие подсказки, если вам нужен текст и подсказка, используйте двойной массив или словарь

public static List<string> GetFieldsName()
{
    List<string> expected = new List<string>();
    IList<IWebElement> labels = driver.FindElements(By.CssSelector("form#param-list label[data-tooltip]"));
    foreach (IWebElement label in labels)
    {
        expected.Add(label.GetAttribute("data-tooltip"));
        //To get text("Carbon Reduction",...) use label.GetText()
    }
    return expected;
}
0 голосов
/ 21 августа 2018

В соответствии с HTML , которым вы поделились для извлечения UI <label> текстов , вы можете использовать любое из следующих решений:

public static List<string> GetFieldsName()
{
    List<string> expected = new List<string>();
    IList<IWebElement> labelNames = driver.FindElements(By.XPath("//div[@class='field-container center' and @id='field-container']//div[@class='field-group']/label[@class='input-label']"));
    foreach (IWebElement labelName in labelNames)
    {
        expected.Add(labelName.GetAttribute("innerHTML"));
    }
    return expected;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...