【问题标题】:Get the text value of an input element in C#在 C# 中获取输入元素的文本值
【发布时间】:2018-04-20 17:37:21
【问题描述】:

我想用 C# 阅读输入项旁边的文本。

这是我的 HTML:

<p id="mpNames">
  <input id="selectMp1" type="checkbox">
  "Text next to the input element"       

这是我的代码:

var inputWeList = drv.FindElements(By.CssSelector("#mpNames > input"));
foreach (var inputItem in inputWeList)
{
       var inputItemText = inputItem.GetAttribute("value");  // gives "on"
       ...
}

我的第二次尝试:

var inputWeList = drv.FindElements(By.CssSelector("#mpNames > input"));
foreach (var inputItem in inputWeList)
{
       var inputItemText = inputItem.Text();  // gives ""
       ...
}  

如何获得“输入元素旁边的文本”?

【问题讨论】:

  • 您能在该文本周围显示更多 HTML 吗?

标签: c# html selenium text input


【解决方案1】:

您需要通过 JavaScript 获取它们,因为文本在同一个父级下。 JavaScript 需要遍历&lt; id="mpNames" 的子节点并返回所有文本节点的子节点。请参阅下面的示例。

var script = @"function getTextNode(rootNode) {
    var nodes = rootNode.childNodes;
    var fieldNames = [];
    var count=0;
    for (var i = 0; i < nodes.length; i++) {
        if ((nodes[i].nodeType == Node.TEXT_NODE)) {            
                let text = nodes[i].textContent.trim();
                fieldNames[count++] = text;                   
        }
    }
    return fieldNames;
}";

var results = (drv as IJavaScriptExecutor).ExecuteScript(script) as List<string>;
results.ForEach(txt => System.Diagnostics.Debug.WriteLine(txt));

【讨论】:

    【解决方案2】:

    似乎"Text next to the input element" 的文本超出了&lt;input&gt; 标记。所以不是:

    var inputWeList = drv.FindElements(By.CssSelector("#mpNames > input"));
    

    你可以试试:

    var inputWeList = drv.FindElements(By.XPath("//p[@id='mpNames' and not(@type='checkbox')]"));
    

    【讨论】:

      【解决方案3】:

      使用inputItem.InnerHtmlinputItem.innerText 代替GetAttribute("value");.Text(),这是两者之间的区别:

      不过,与 innerText 不同的是,innerHTML 允许您使用 HTML 富文本 并且不会自动编码和解码文本。换一种说法, innerText 检索标签的内容并将其设置为纯文本, 而 innerHTML 检索和设置相同的内容,但在 HTML 格式

      【讨论】:

      • 还有 inputItem.GetAttribute("innerHTML");给我“”。
      • @kame 你试过属性inputItem.InnerHtml 代替方法GetAttribute
      • 我不能在 C# 中使用inputItem.InnerHtml
      猜你喜欢
      • 1970-01-01
      • 2022-09-29
      • 2020-09-12
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      相关资源
      最近更新 更多