如何获取与Java中的复选框关联的文本

时间:2014-08-12 08:40:47

标签: selenium-webdriver

我的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...

4 个答案:

答案 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帖子以获取更多见解