繁体   English   中英

java.lang.ClassCastException: 类 org.openqa.selenium.By$ByXPath 不能转换为类 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 在未命名的模块中加载器“应用程序”)

我已经提到了这个链接java.lang.ClassCastException: org.openqa.selenium.By$ById cannot be cast to org.openqa.selenium.WebElement

但此链接没有回答我的情况。

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

请帮忙!

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

我看到您正在尝试将ByWebElement ,但这不是解决问题的正确方法。 在调用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM