使用selenium 3.0与jdk1.8和selenium webdriver测试版

问题描述 投票:0回答:1
List<WebElement> findElement = (List<WebElement>) driver.findElement(By.tagName("a"));
List<WebElement>  links = findElement;
System.out.println(links.size());
for (int i = 1; i<=links.size(); i=i+1)
{
    System.out.println(links.get(i).getText());
}

当我尝试运行此代码时,它显示一些问题:

Exception in thread "main" java.lang.ClassCastException: org.openqa.selenium.remote.RemoteWebElement cannot be cast to java.util.List
    at Home_Screen.Home.main(Home.java:60)

我使用谷歌浏览器运行这个selenium webdriver 3.0

java list selenium selenium-webdriver
1个回答
0
投票

错误说明了一切:

Exception in thread "main" java.lang.ClassCastException: org.openqa.selenium.remote.RemoteWebElement cannot be cast to java.util.List
    at Home_Screen.Home.main(Home.java:60)

当您尝试在findElement(By.tagName("a")中存储List<WebElement>(返回单个WebElement)的输出时,JVM会抱怨java.lang.ClassCastException,因为RemoteWebElement的实例无法转换为java.util.List。

如果您尝试在每个<a>标记内打印文本,可以按照以下代码块使用增强的for()循环:

List<WebElement> find_all_a_elements = driver.findElements(By.tagName("a"));
for (WebElement ele:find_all_a_elements)
{
    System.out.println(ele.getText());
} 
© www.soinside.com 2019 - 2024. All rights reserved.