我的代码:-文件1。JAVA
public int isListAvailable(String locator) throws Exception {
WebElement ele = getObject(locator);
List<WebElement> ls = **(List<WebElement>) ele;**
//List<WebElement> ls1 = driver.findElements((By) ele);
//List<WebElement> ls2 = driver.findElements(ele);
int rowCount = ls.size();
System.out.println("Last1 row=" + rowCount);
return rowCount;
}
public WebElement getObject(String locatorKey) throws Exception {
WebElement ele = null;
WebDriverWait wait = new WebDriverWait(driver, 10);
try {
if (locatorKey.endsWith("_xpath")) {
ele = driver.findElement(By.xpath(prop.getProperty(locatorKey))); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(prop.getProperty(locatorKey))));
}
.....
...
....
}catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return ele;
}
File2.java(catlisting_xpath元素的XPATH)
public void search_List() throws Exception {
if(con.isListAvailable("catlisting_xpath") >=1)
{
con.infoLog("Category List is available");
}else {
con.infoLog("Category List is not available");
}
}
错误:-
JAVAlang.ClassCastException:类组织。openqa。硒。遥远的RemoteWebElement不能转换为java类。util。列表(org.openqa.selenium.remote.RemoteWebElement位于加载器“app”的未命名模块中;java.util.List位于加载器“bootstrap”的java.base模块中)
问题是,当我在F上运行或键入时ile1.java在List ls=(List)ele处收到警告;警告是类型安全:未检查从WebElement到List的强制转换
有人能帮忙吗,怎么解决这个...
这非常复杂。
强制转换运算符((某物类型)某物扩展)
)做3件几乎完全不相关的事情。我认为你在这里混淆了其中的一些。
如果SomeType是一个原始数字类型(int
、char
、double
、float
、long
、byte
或short
),则强制转换为另一个。
但这就是强制转换的转换方面的结束。在所有其他情况下,您只是告诉编译器:我知道表达式的类型是我告诉您的类型。有时,会添加运行时检查(如果表达式不是那种类型,这将抛出ClassCastException
)。有时,编译器只是相信你的话。
泛型部分(
但这一警告在这种情况下是完全不相关的:问题根本不是这一部分。获取运行时检查的非泛型部分(列表)。因为它得到了一个运行时检查,编译器不会发出警告:这很好——如果您的类型断言被证明是错误的,那么在运行时您将得到一个异常,它将通知您这一点。
因此,警告是关于<代码>
您的WebElement不是列表。也许您正在尝试创建一个包含单个元素的列表。在这种情况下,您需要
List.of(ele);
。正如我所说,类型断言模式强制转换不会转换任何内容,因此您不能使用它将元素转换为仅包含该元素的列表。
WebElement ele = getObject(locator);
List<WebElement> ls = (List<WebElement>) ele;
您正在将列表转换为WebElement,这是无效的。我相信你的getObject方法,你正在使用findElement方法来识别定位器。而不是使用findElements方法来获取web元素的列表
试试像下面这样,
List<WebElement> ls = driver.findElements(By.xpath(locator));
问题内容: 在我的spring应用程序上下文文件中,我有类似以下内容: 在java类中,实现如下所示: 在Eclipse中,我看到一条警告: 类型安全性:未经检查的从Object到HashMap的转换 我做错了什么?我该如何解决该问题? 问题答案: 好吧,首先,你正在通过新的HashMap创建调用浪费内存。你的第二行完全忽略了对此创建的哈希图的引用,从而使该哈希图可用于垃圾收集器。因此,不要这样做
我有这样一种方法,将结果强制转换到(列表),但我的eclipse仍然在抱怨!类型安全:未选中从列表到列表的强制转换
问题内容: 我尝试将一个对象强制转换为我的Action类,但是会导致警告: 感谢您的任何帮助 问题答案: 是的- 这是类型擦除的自然结果。如果确实是if 的实例,则强制转换不会捕获该实例-您只会在尝试使用它时才看到问题,传入a 而不是字符串。 您可以使用以下方法消除警告: 作为功能注释,但您不能轻松地解决潜在的问题:(
下面是程序的一部分,它将ArrayList从服务器发送到客户端。我想删除关于此代码最后一行的警告: 客户端代码: MyVariable是一个具有一些属性的Java类。服务器正在创建一个ArrayList并用MyVariable变量作为项目填充它。然后它将完整的列表发送给客户端。 我想知道为什么我在那里有一个警告,以及如何完美地编码以获得0个警告。如果可能,我希望避免使用“@SuppressWarn
我有一个通用类。它看起来像这样: 显然,conevertdatajsonstring方法仅在字符串类型为T时调用。但有一个警告: 类型安全:未选中从字符串转换为T 有没有一种方法可以在不使用SuppressWarnings的情况下解决此问题: @抑制警告(“未选中”) 方法之前?
//一些代码... 方法的定义: 执行存储过程并返回输出参数的映射,按名称键入,如参数声明中所示 上面一行的警告: 来抑制它。 问题:但我如何正确地施放它呢? > 我尝试的一种方法是 不过,我还是必须在castObject()方法中放入SuppressWarnings(“unchecked”)。我不知道这样做是否正确。 我尝试的第二种方法是, 欢迎提出任何建议/建议。