Selenium 4.10.0报错:Cannot cast from Chromecast to JavascriptExecutor
解决Selenium 4.10.0中Cannot cast from Chromecast to JavascriptExecutor错误
问题根源
你的代码里自定义了名为JavascriptExecutor的类,这和Selenium官方的org.openqa.selenium.JavascriptExecutor接口重名了。编译器会优先识别你自己的类,而非Selenium的接口,所以把ChromeDriver实例强转时就会触发类型转换错误。
解决方案
有两种简单的修复方式:
方案1:重命名自定义类
修改你的类名,避免和Selenium接口名冲突,比如改成JavascriptExecutorDemo:
package UI; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.chrome.ChromeDriver; import io.github.bonigarcia.wdm.ChromeDriverManager; public class JavascriptExecutorDemo { public static void main(String[] args) { ChromeDriverManager.getInstance().setup(); ChromeDriver driver = new ChromeDriver(); driver.get("https://ebay.co.uk"); // 正常转换为Selenium的JavascriptExecutor接口 JavascriptExecutor jxect = (JavascriptExecutor) driver; // 示例:执行滚动到底部的JS代码 // jxect.executeScript("window.scrollTo(0, document.body.scrollHeight);"); } }
方案2:使用全限定类名声明变量
如果不想修改类名,可以在声明变量时明确指定Selenium接口的全限定类名:
package UI; import org.openqa.selenium.chrome.ChromeDriver; import io.github.bonigarcia.wdm.ChromeDriverManager; public class JavascriptExecutor { public static void main(String[] args) { ChromeDriverManager.getInstance().setup(); ChromeDriver driver = new ChromeDriver(); driver.get("https://ebay.co.uk"); // 用全限定类名指定Selenium的JavascriptExecutor接口 org.openqa.selenium.JavascriptExecutor jxect = (org.openqa.selenium.JavascriptExecutor) driver; } }
内容的提问来源于stack exchange,提问作者taerese
相关产品推荐
相关产品推荐

