我的html以下,如何获取复选框名称?
<html>
<body>
<form>
<input type="checkbox" name="Countries" value="US">Unites States</input>
<input type="checkbox" name="Countries" value="UK">United Kingdom</input>
</form>
</body>
</html>
我在下面试过,但没有人帮忙:
List<WebElement> eles=driver.findElements(By.name("Countries"));
Integer ddSize=eles.size();
for(Integer i=0;i<ddSize;i++)
System.out.println(eles.get(i).getText());
or
for(WebElement ele:eles)
System.out.println(ele.getText());
also tried ele.getAttribute("text") etc...
答案 0 :(得分:1)
您可以编写如下代码:
List<WebElement> checkboxes=driver.findElements(By.xpath("//input[@type='checkbox']"));
for (WebElement checkbox: checkboxes) {
System.out.println(checkbox.getText());
希望它有所帮助!
答案 1 :(得分:1)
很久以前就出现了一个问题 - https://code.google.com/p/selenium/issues/detail?id=2922
引用该问题 -
关闭已修复,很久以前就确定getText返回空 对于输入元素的字符串,用户应使用getAttribute(&#34; value&#34;)。
您的html代码已经有一个&#34;值&#34;在你的输入标签里面让事情变得有点困难。
根据w3schools关于使用&#34;值&#34;属性 -
对于&#34;复选框&#34;,&#34; radio&#34;,&#34; image&#34; - 它定义了相关的值 输入(这也是提交时发送的值)
因此,我认为不需要在&#34;输入&#34;中添加额外的文本(如代码中的美国和英国)。元素与&#34;复选框&#34;因为这是在标准实践中照顾,通过使用&#34;值&#34;复选框的属性。
答案 2 :(得分:0)
请使用以下代码获取Checkboxes的值。
List<WebElement> eles=driver.findElements(By.name("Countries"));
Integer ddSize=eles.size();
for(Integer i=0;i<ddSize;i++)
System.out.println(eles.get(i).getAttribute("value"));
我修改了您的代码,而不是获取使用属性为getAttribute("value")
的{{1}}方法所需的文本值。
您的输出将是:
value
如果您只想打印值,也可以使用下面的命令行来完成。
US
UK
这将提供如下所述的输出,b&#39;因为您的文字标有表格标签而非输入标签:
System.out.println(driver.findElement(By.xpath("html/body/form")).getText());
希望它有所帮助! :)
答案 3 :(得分:0)
Selenium Webdriver将innerHTML
视为属性,因此您可以使用
String text = ele.getAttribute("innerHTML");
此外,getText()
无法与input
元素
这篇文章将向您解释RC here
编辑:根据OP评论
innerHTML适用于大多数浏览器。或者您可以使用javascript执行程序来执行此操作。
String text = (String)(JavascriptExecutor (driver)).executeScript("return arguments[0].innerHTML;", ele);
您可以查看this帖子以获取更多见解