我想单击 Python Selenium 中的下一个元素。 由于shadow dom,我无法点击。我应该怎么办? 我的代码是这个,对应的html是这个
browser.get('https://ownist.kr/member/login.html')
time.sleep(5)
iframe = browser.find_element(By.XPATH, '/html/body/iframe[3]') # Replace with the actual XPATH
browser.switch_to.frame(iframe)
def expand_shadow_element(element):
shadow_root = browser.execute_script('return arguments[0].shadowRoot', element)
return shadow_root
#the above becomes
shadow_section = expand_shadow_element(browser.find_element(By.XPATH,'//*[@id="ch-shadow-root-wrapper"]'))
shadow_section.find_element(By.CSS_SELECTOR,".PopupCloseBtn__CloseButton-ch-front__sc-14jjsiy-1 fOmWsj").click()
提前谢谢您
我点击了shadow dom中的一个元素,但是效果不佳。
您的情况下的影子根主机是
#ch-plugin-entry div
。
此外,您的模式显示为异步
driver.get('https://ownist.kr/member/login.html')
sleep(10)
dialog = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#ch-plugin-entry div')))
shadow_section = expand_shadow_element(dialog)
shadow_section.find_element(By.CSS_SELECTOR, "[class*=PopupCloseBtn]").click()
但这对于关闭模式的情况来说不是一个好方法。
我建议通过JS隐藏它。这样你就不会因为等待而睡觉。
driver.get('https://ownist.kr/member/login.html')
dialog = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#ch-plugin-entry div')))
driver.execute_script('arguments[0].style.display = "none";', dialog)