Selenium Java:单击 Shadow-root 内带有 CSSselector 的按钮

问题描述 投票:0回答:1

我从这里弹出 cookie:

网站

我用 Shadow-root 选择了这样的:

如何

现在我想单击带有 xpath 表达式的按钮,如下所示:

WebElement shadowHost = driver.findElement(By.id("usercentrics-root"));
SearchContext shadowRoot = shadowHost.getShadowRoot();
WebElement shadowContent = shadowRoot.findElement(By.cssSelector("button[data-testid='uc-accept-all-button']"));

shadowContent.click();

但是硒总是给我:

org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{“method”:“css选择器”,“selector”:“button[data-testid ='uc-accept-all-button']” }

如何点击右侧按钮?

我期待CSS选择器

button[data-testid='uc-accept-all-button']
选择shadow-root内部的按钮。

寻找CSSselector“class”

sc-dcJsrY.fMlgSq
有相同的
unable to locate element
错误。

还有一个问题是:我也可以在 chrome 检查中验证 Shadow-root 内部的 CSSselector 吗?在 chrome 检查中搜索 CSSselector 出现次数为零。

我在这里读到不支持 xpath,所以我切换到 CSSselector: 问题

java selenium-webdriver xpath
1个回答
0
投票

您的问题可能需要简单的thread.sleep()或explicitWait; 这段代码对我有用:

WebElement el = driver.findElement(By.cssSelector("#usercentrics-root")); SearchContext shadowRoot = el.getShadowRoot(); Thread.sleep(2000); WebElement actual = shadowRoot.findElement(By.cssSelector(".dRvQzh  .fMlgSq")); actual.click(); 

© www.soinside.com 2019 - 2024. All rights reserved.