我有一个需要自动化的门户。当我尝试单击对话框的“全部接受”按钮元素时,问题就出现了。但是,在尝试使用检查(F12)时我无法找到它。 以下是HTML代码:
<div class="sc-jsJBEP iXSECa">
<div data-testid="uc-buttons-container" style="margin: 0px -6px;" class="sc-eeDRCY fnyekb">
<button aria-label="More Information" role="button" data-testid="uc-more-button" style="margin: 0px 6px;" class="sc-dcJsrY kvOhCL">Settings</button>
<button role="button" data-testid="uc-deny-all-button" style="margin: 0px 6px;" class="sc-dcJsrY dExLQu">Deny</button>
<button role="button" data-testid="uc-accept-all-button" style="margin: 0px 6px;" class="sc-dcJsrY iYvtyJ">Accept All</button>
</div>
</div>
这是我需要点击的按钮代码:
<button role="button" data-testid="uc-accept-all-button" style="margin: 0px 6px;" class="sc-dcJsrY iYvtyJ">Accept All</button>
但是,当我尝试检查该元素时,我无法找到它。尝试了多个 xpath,但无法在任何一个中找到:
Xpath used = "//button[@data-testid='uc-accept-all-button']"
XPath used = "//button[text()='Accept All']"
这是我在 python 中的硒代码:
accept_button = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, XPATH_AcceptAllBtn))
)
accept_button.click()
单击该元素时我在控制台中收到的错误消息:
根据您的屏幕截图,我找到了您正在开发的网站,这对我有用。一旦你揭开了影子 DOM 的面纱,你更直接的 XPATH 方法可能也会起作用。
y = driver.find_element(By.ID,'usercentrics-root').shadow_root
focus_wall = y.find_element(By.ID,'focus-lock-id')
for x in focus_wall.find_elements(By.TAG_NAME,'button'):
if x.get_attribute("innerText") == 'Accept All': x.click()