键入将 Webelement 强制转换为 Select 时出错

Sur*_*bhi 4 java selenium selenium-webdriver

  1. 在我的网页中有多个dropdowns具有相同属性值的

  2. 我把所有这些都Webelements放在一个列表中

  3. 现在WebElement使用索引从列表中获取一个

  4. 在尝试将其输入WebElement到 Select 时,出现错误:

“java.lang.ClassCastException: org.openqa.selenium.remote.RemoteWebElement 不能转换为 org.openqa.selenium.support.ui.Select”

请帮忙!下面是我的代码。

int index;
String sIndex = null;
By element = ORUtils.ORGenerator(pageName,objectName);
//Getting all the webelements with same name in myElement List
java.util.List<WebElement> myElements=WebUtils.driver.findElements(element);

//Get index of element on page
Pattern pIndex=Pattern.compile("(.*)");
Matcher mIndex=pIndex.matcher(objectName);
if(mIndex.find())
{
    sIndex=objectName.replaceAll("[a-z]","");
    sIndex=sIndex.replaceAll("[A-Z]","");
}

index=Integer.valueOf(sIndex);
index=index-1;
//Getting element from the List using index
WebElement myElement=myElements.get(index);

//Type casting WebElement to Select this is where i get the error**
Select myDropDown=(Select) myElement;

List<WebElement> listOfOptions = myDropDown.getOptions();
//List<WebElement> listOfOptions=myElement.
for(WebElement item : listOfOptions)
{
    if(Value.equals((item.getText())))
    {
        item.click();
        Thread.sleep(2000);
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

Viv*_*ngh 7

在 java 对象类型转换中,一个对象引用可以被类型转换为另一个对象引用。转换可以是它自己的类类型,也可以是它的子类或超类类型或接口之一。所以你在做什么是不正确的。要使用 myElement 创建 Select 对象,请执行以下操作:

Select myDropDown=new Select(myElement);
Run Code Online (Sandbox Code Playgroud)

要了解更多信息,您还可以通过查看来尝试instanceOf。在这里,您可以将其检查为:

if (myElement instanceof Select)
    System.out.println(true);
else
    System.out.println(false);
Run Code Online (Sandbox Code Playgroud)

你会得到你的答案。