Selenium 操作 Chrome 浏览器中 shadow-root 标签,进行标签转换是报错?

说明

使用JAVA selenium操作chrome浏览器的shadow-root标签时,在chrome浏览器87版本之前,都可以将shadow-root下的内容转换成一个WebElement之后进行后续操作,但是今天发现在103版本上不能操作了。报强转异常。代码如下

chrome浏览器87之前版本

例如:我们操作的地址如下。 chrome://settings/clearBrowserData

浏览器清理cookies以及缓存的页面

ChromeDriver driver = new ChromeDriver();

// 打开当前网址

driver.get("chrome://settings/clearBrowserData");

// 获取 settings-ui 标签 - settings-ui标签下面第一个就是 shadow-root 元素

WebElement settingsUI = driver.findElement(By.tagName("settings-ui"));

// 调用公共方法将 shadow-root 元素转换成 WebElement 元素

WebElement shadowSettingUI = expandRootElement(driver, settingsUI);

// 后面就可以继续根据 shadowSettingUI 进行查找元素和操作元素了

WebElement container = shadowSettingUI.findElement(By.id("container"));

公共方法,将shadow-root元素转换成WebElement元素的方法

private static WebElement expandRootElement(ChromeDriver driver, WebElement element) {

return (WebElement) driver.executeScript("return arguments[0].shadowRoot", element);

}

上面的代码,在chrome的87版本之前都是可以正常使用的,但是现在103.0.5060.114 (正式版本) (64 位) (cohort: Stable) 版本上报错。错误信息如下。

Exception in thread "main" java.lang.ClassCastException: com.google.common.collect.Maps$TransformedEntriesMap cannot be cast to org.openqa.selenium.WebElement

at com.rhy.autoplay.driver.DriverUtils.expandRootElement(DriverUtils.java:260)

at com.rhy.autoplay.driver.DriverUtils.clearDriverCookiesV103(DriverUtils.java:445)

Disconnected from the target VM, address: '127.0.0.1:11174', transport: 'socket'

一直没找到原因,也没有找到可以替代的方案。

以上是 Selenium 操作 Chrome 浏览器中 shadow-root 标签,进行标签转换是报错? 的全部内容, 来源链接: utcz.com/p/944589.html

回到顶部