我正在尝试获取复选框标签的文本值。这是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>
所以我到目前为止已经尝试了
Driver.FindElement(By.XPath("//input[@type='checkbox']")).Text
; Driver.FindElement(By.XPath("//input[@type='checkbox']")).GetAttribute("value");
Driver.FindElement(By.XPath("//input[@type='checkbox']")).GetAttribute("name");
Driver.FindElement(By.XPath("//input[@type='checkbox']")).GetAttribute("innerText");
Driver.FindElement(By.XPath("//input[@type='checkbox']")).GetAttribute("innerHTML");
所有这些尝试均返回""
。
关于如何获取它或Javascript的任何想法是我唯一的选择?
答案 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");