![](/img/trans.png)
[英]java.lang.ClassCastException: org.openqa.selenium.By$ById cannot be cast to org.openqa.selenium.WebElement
[英]java.lang.ClassCastException: class org.openqa.selenium.By$ByXPath cannot be cast to class org.openqa.selenium.WebElement
我正在尝试使用 Page 对象模型在 selenium web 驱动程序中自动化单选按钮。 下面是我的代码解释:
By AutomaticDataLockTimed = By.xpath("//span[@class='ant-radio']//input[@name='automaticDataLock']");
if (!((WebElement) AutomaticDataLockTimed).isSelected()) {
JSUtil.clickElementUsingBySelector(AutomaticDataLockTimed, driver);
}
}
我收到以下错误消息
java.lang.ClassCastException:类 org.openqa.selenium.By$ByXPath 不能转换为类 org.openqa.selenium.WebElement(org.openqa.selenium.By$ByXPath 和 org.openqa.selenium.WebElement 在未命名的模块中加载器“应用程序”)
但此链接没有回答我的情况。
我认为这是由于我的 if 语句中的转换问题,但我无法修复。
请帮忙!
您正在尝试在AutomaticDataLockTimed
上调用.isSelected()
,它是一个By
对象,但isSelected()
是WebElement
上的一个方法——这就是您的异常的来源。
我看到您正在尝试将By
为WebElement
,但这不是解决问题的正确方法。 在调用isSelected()
之前,您需要使用WebDriver
实例来定位具有AutomaticDataLockTimed
的元素:
编辑:此答案已更新为使用用户指定的getAttribute("value")
而不是isSelected()
。 我将按原样保留答案描述以匹配原始问题描述。
By AutomaticDataLockTimed = By.xpath("//span[@class='ant-radio']//input[@name='automaticDataLock']");
// locate the element using AutomaticDataLockTimed locator
WebElement element = webdriver.findElement(AutomaticDataLockTimed);
if (!element.getAttribute("value").equals("true"))
{
JSUtil.clickElementUsingBySelector(AutomaticDataLockTimed, driver);
}
请记住,您应该在脚本的开头启动WebDriver
,如下所示:
WebDriver webdriver = new ChromeDriver();
希望这个对你有帮助。
这对我有用。
List<WebElement> list = driver.findElements(WEBELEMENT);
for (int i = 0; i < list.size(); i++) {
String str = list.get(i).getAttribute("value");
if (str.equals("true")) {
list.get(i).click();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.