java - Selenium 中 WebElements 与 WebElement 的区别

标签 java selenium

我正在从 facebook 获取日期网络元素,并使用下面的代码循环它。

public class select_facebook {
    public static void main(String[] args) throws Exception {
        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.facebook.com");
        List<WebElement> days = driver.findElements(By.xpath("//select[@id='day']"));

         System.out.println(days.size()); 

        for (int i=0;i<days.size();i++) {
            System.out.println(days.get(i));
        }


    }

}

但我得到的输出为

1

[[FirefoxDriver: firefox on XP (58765a0e-31a0-40bc-8565-3418ae54682c)] -> xpath: //select[@id='day']]

但是如果我使用System.out.println(days.get(i).gettext());,for循环中的代码相同

它列出了从 1 到 31 的所有日期。

我的问题是为什么我要把它称为

List<WebElement> days = driver.findElements(By.xpath("//select[@id='day']"));

因为 webElements 的大小也只是 :1

System.out.println(days.size());

相反,我可以将其称为

WebElement days = driver.findElement(By.xpath("//select[@id='day']"));

最佳答案

您将获得元素列表作为返回

List<WebElement> days = driver.findElements(By.xpath("//select[@id='day']"));

因为同一 ID(“day”)可能有多个元素。

关于java - Selenium 中 WebElements 与 WebElement 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52964388/

相关文章:

selenium - 获取 td 标签内 div 的 xpath

java - 当包含 ajax 关闭事件监听器时,Primefaces 对话框不会重新打开

Java - 在 for 循环中声明变量

java - 验证字符串

java - 是否有基于 selenium 的 java api 构建器?

javascript - 如何使用 python selenium 单击位于 html 页面列表中没有唯一标识符的文本?

java - 检查作业是否已在运行,跳过新的 cron 实例作业

java - 使用 JPA Hibernate 而不使用 Spring 的多个数据库

python - 谷歌浏览器无法读取和写入其数据目录 : selenium

node.js - 使用 Protractor 运行 chrome 驱动程序时获取 'E/launcher - spawn Unknown system error -86'