Selenium获取网页元素遇到shadow-root

Python版本解决方案

以图片为例


248966b779b94ed0db14d4f0ffb8048.png

先从浏览器查找到shadow-root的外层元素marsol-popup,

marsol_pop = driver.find_element(By.CSS_SELECTOR,'marsol-popup')

然后使用shadow_root方法获取到当前的shadow-root

shadow_root = marsol_pop.shadow_root

然后通过CSS_SELECTOR方法获取到shadow-root 上的元素

el = shadow_root.find_element(By.CSS_SELECTOR,'div[class="close svelte-rbapkb"]')

上面的代码合并起来就是

el = self.driver.find_element(By.CSS_SELECTOR,'marsol-popup').shadow_root.find_element(By.CSS_SELECTOR,'div[class="close svelte-rbapkb"]')

实测中获取shadow-root上的元素只能用CSS_SELECTOR方法获得,通过Xpath一直报错
使用Python的execute_script方法调用JS代码也不行,还没查清楚问题,先记录下来。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容