【问题标题】:How to extract the UI label texts using selenium webdriver如何使用 selenium webdriver 提取 UI 标签文本
【发布时间】:2018-05-17 15:35:33
【问题描述】:

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>

我的 webUI 有上面的 html,我正在尝试读取里面的所有字段 (id="param-list") 并获取名称,即 Beta 和 Carbon Reduction 以及“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,并且不确定如何从上面的 Html 中选择 BetaCarbon Reduction 的名称。

【问题讨论】:

  • 您的问题不清楚您需要做什么。据我了解,您希望为表单中的每个标签元素显示标签值,即您应该获得“Beta”和“Carbon Reduction”......您可以使用 css 选择器获取所有标签:'form[id= 'param-list'] label' ...这将给出一个包含两个标签的集合...现在您可以调用 element.Text 来获取标签的值。
  • 还可以使用选择器'label.input-label'获取标签元素...如果要获取每个标签的data-tooltip值,可以调用element.GetAttribute('data-tooltip ')
  • 感谢 Nish26,根据您的建议,我更改了代码以获取标签名称并且工作正常..

标签: c# selenium selenium-webdriver xpath webdriver


【解决方案1】:

根据您共享的 HTML 来提取 UI &lt;label&gt;文本,您可以使用以下任一解决方案:

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

【讨论】:

    【解决方案2】:

    下面的代码将返回工具提示,如果您需要文本和工具提示,请使用双数组或字典

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 2019-12-29
      • 2021-06-09
      • 1970-01-01
      • 2017-03-21
      • 2017-05-09
      相关资源
      最近更新 更多