获取复选框标签文本Selenium C#

时间:2018-08-12 22:58:35

标签: c# html selenium xpath checkbox

我正在尝试获取复选框标签的文本值。这是HTML代码

<div id="content" class="large-12 columns">
        <div class="example">
  <h3>Checkboxes</h3>
  <form id='checkboxes'>
    <input type="checkbox"> checkbox 1</br>
    <input type="checkbox" checked> checkbox 2
  </form>
</div>

所以我到目前为止已经尝试了

  1. Driver.FindElement(By.XPath("//input[@type='checkbox']")).Text;
  2. Driver.FindElement(By.XPath("//input[@type='checkbox']")).GetAttribute("value");
  3. Driver.FindElement(By.XPath("//input[@type='checkbox']")).GetAttribute("name");
  4. Driver.FindElement(By.XPath("//input[@type='checkbox']")).GetAttribute("innerText");
  5. Driver.FindElement(By.XPath("//input[@type='checkbox']")).GetAttribute("innerHTML");

Here is a screenshot

所有这些尝试均返回""。 关于如何获取它或Javascript的任何想法是我唯一的选择?

4 个答案:

答案 0 :(得分:1)

输入标签后的文本的xpath是//input[1]/following-sibling::text()[1],但是Selenium运行这样的表达式存在严重限制。它只能处理标签元素。尝试获取父母并从那里检索文本。

string[] texts = Driver.FindElement(By.XPath("//form[@id='checkboxes']"))
   .GetAttribute("innerText")
   .Split("\r\n".ToCharArray()
);

然后文本[0]返回:

  

复选框1

答案 1 :(得分:0)

将class或id属性添加到复选框,然后尝试通过css选择器查​​找元素,例如:Driver.FindElement(By.CssSelector(“”))

答案 2 :(得分:0)

您可以尝试从以下两个复选框中获取所需的文本:

Driver.FindElement(By.XPath("//form[@id='checkboxes']/input[@type='checkbox'][1]")).Text
Driver.FindElement(By.XPath("//form[@id='checkboxes']/input[@type='checkbox'][2]")).Text

如果上述代码对您不起作用,请告诉我。

答案 3 :(得分:0)

您还可以使用CSS选择器来获取复选框标签:

Element CheckBox = Driver.FindElement(By.CssSelector("input[type='checkbox']"));

string firstChkBoxTxt = CheckBox.FirstOrDefault().GetAttribute("innerText");
string secondChkBoxTxt = CheckBox.LastOrDefault().GetAttribute("innerText");