Selenium webdriver 在chrome设置页面获取不到#shadow-root下面的html标签

本文介绍使用Selenium WebDriver和WinForm开发自动化登录工具的过程中遇到的问题及解决办法。主要探讨了在Chrome浏览器中无法通过Selenium定位#shadow-root元素的情况,并提供了启用隐私模式作为替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Selenium webdriver 在chrome设置页面获取不到#shadow-root下面的html标签

最近自己想用winform和selenium做个自动登陆web网站的小工具,动力来源于,开发过程中或者处理bug过程中经常需要切换账号登陆,打开浏览器,地址栏输入地址,输入账号密码,登陆,这个过程感觉在开发过程中经常会遇到,所以干脆自己做个小工具,自动化登陆,设置好账号密码和登陆地址就好,这也能节约很多时间

创建winform项目,引入Selenium.WebDriver 和Selenium.WebDriver.ChromeDriver

在这里插入图片描述
然后更具chrome浏览器下载对应版本的chromedriver.exe 并移动到对应文件夹下,然后就能写程序啦,这里有个问题,我想在打开登录页前先清理浏览器缓存,我的思路是这样的:先打开浏览器,然后跳转到“chrome://settings/clearBrowserData”,就会弹出下图,这时直接点击“清除数据”就行,很简单;但是实现过程中发现弹窗的内容是在#shadow-root下面,里面的元素通过id,cssselector,xpath都不能获取到,网上也查了下,一直没有找到很好的解决方案,这里先暂时启动的时候启用隐私模式代替。关于如何启用隐私模式另一篇文章有讲,这里就不赘述了。
在这里插入图片描述

在Python中,结合Selenium库操作Shadow DOM下的元素(如textarea)需要一些额外的步骤,因为Selenium默认并不直接支持Shadow DOM。以下是使用`selenium.webdriver.support.selective_search.SelectorEngine`和`WebElement.shadowRoot`来给`<textarea>`赋值的一个示例: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.action_chains import ActionChains # 创建一个新的WebDriver实例,这里假设已经通过ChromeDriver连接到浏览器 driver = webdriver.Chrome() # 让浏览器打开某个支持Shadow DOM的网页 url = "https://example.com" # 替换为你实际的目标页面 driver.get(url) # 使用SelectorEngine选择到 Shadow DOM 下的 textarea 元素 selector = '#your-shadow-root-selector textarea' # 根据实际情况替换选择器 wait = WebDriverWait(driver, 10) # 设置超时时间 element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, selector))) # 获取textarea的shadowRoot对象 shadow_root = element.shadowRoot # 现在可以对textarea元素进行操作了,例如赋值 value_to_set = "Your text here" text_area_element = shadow_root.find_element_by_tag_name('textarea') ActionChains(driver).move_to_element(text_area_element).click().send_keys(value_to_set).perform() # 别忘了保存或提交表单,如果这是一个表单元素 submit_button = shadow_root.find_element_by_css_selector('.submit-button') # 这取决于按钮CSS选择器 submit_button.click() # 关闭浏览器 driver.quit() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值