gpt4 book ai didi

通过 Selenium 执行测试时,java.lang.ClassCastException : java. base/java.lang.String 无法转换为 org.openqa.selenium.WebElement

转载 作者:行者123 更新时间:2023-11-30 02:03:40 25 4
gpt4 key购买 nike

我正在尝试在 Selenium WebDriver 中进行自动化测试,但 Eclipse 向我显示以下错误:

java.lang.ClassCastException: java.base/java.lang.String cannot be cast to org.openqa.selenium.WebElement

这是我的代码:

public void SeachApp()
{
Object elem = driver.getPageSource().contains("Staffing");

if (elem != null)
{
System.out.println("Encontrado");
int width = ((WebElement) elem).getSize().getWidth();

Actions act = new Actions(driver);
act.moveToElement((WebElement) elem)
.moveByOffset((width / 2) - 15, 0)
.click()
.perform();
}
else
{
System.out.println("Não Encontrado");
}
}

发生了什么事,我该如何解决这个问题?

最佳答案

getPageSource()

根据文档getPageSource()返回当前页面的源并定义为:

Get the source of the last loaded page. If the page has been modified after loading (for example, by Javascript) there is no guarantee that the returned text is that of the modified page. You need to follow the documentation of the particular driver being used to determine whether the returned text reflects the current state of the page or the text last sent by the web server. The page source returned is a representation of the underlying DOM: do not expect it to be formatted or escaped in the same way as the response sent from the web server.

<小时/>

包含()

contains() method 是一个Java方法,用于检查String是否包含另一个子字符串。它返回 boolean 值,因此可以直接在 if 语句中使用。

<小时/>

分析

您使用的表达式:

driver.getPageSource().contains("Staffing");

将返回一个 boolean 值,但会被转换为Object类型的对象。此外,当您尝试将 Object 类型的对象转换为 WebElement 类型时,您会看到错误如下:

java.lang.ClassCastException: java.base/java.lang.String cannot be cast to org.openqa.selenium.WebElement
<小时/>

解决方案

如果您想要定位WebElement,您必须使用以下方法之一:

现在,如果您希望获取文本为 StaffingWebElement(不引用任何相关 HTML),您可以使用以下解决方案:

WebElement element = driver.findElement(By.xpath("//*[contains(text(),'Staffing')]"));

现在,一旦找到 WebElement,您就可以使用 WebElement 轻松执行其余任务。

关于通过 Selenium 执行测试时,java.lang.ClassCastException : java. base/java.lang.String 无法转换为 org.openqa.selenium.WebElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51972824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com