java.lang.ClassCastException: class org.openqa.selenium.By



我正在尝试使用页面对象模型在硒Web驱动程序中自动执行单选按钮。 以下是我的代码解释:

By AutomaticDataLockTimed = By.xpath("//span[@class='ant-radio']//input[@name='automaticDataLock']");
if (!((WebElement) AutomaticDataLockTimed).isSelected()) {
JSUtil.clickElementUsingBySelector(AutomaticDataLockTimed, driver);
}
}

我收到以下错误消息

java.lang.ClassCastException: class org.openqa.selenium.By$ByXPath 不能 cast to class org.openqa.selenium.WebElement (org.openqa.selenium.By$ByXPath 和 org.openqa.selenium.WebElement 位于加载器'app'的未命名模块中(

我已经引用了这个链接java.lang.ClassCastException:org.openqa.selenium.By$ById 不能强制转换为org.openqa.selenium.WebElement

但是这个链接没有回答我的情况。

我认为这是由于我的 if 语句中的铸造问题,但我无法修复。

请帮忙!

您正在尝试在AutomaticDataLockTimed上调用.isSelected(),这是一个By对象,但isSelected()WebElement上的一个方法 - 这就是您的异常的来源。

我看到您正在尝试将By投给WebElement,但这不是解决问题的正确方法。您需要使用WebDriver实例找到具有AutomaticDataLockTimed的元素,然后才能调用isSelected()

编辑:此答案已更新为使用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();
}

相关内容

  • 没有找到相关文章

最新更新