python - Python:通过 Selenium remotedriver 手动配置 Chrome://settings
问题描述
我正在尝试通过 selenium webdriver 控制 chrome://settings,我尝试这样做的方式如下:
driver.get('chrome://settings/content/siteDetails?site=https%3A%2F%2Fwww.google.com')
a_button = WebDriverWait(driver, 5).until(
EC.presence_of_element_located((By.XPATH, '//select[contains(@id, "permission")]')))
由于某种原因 selenium 无法识别 xpath,因此我无法选择它并在设置中移动或更改任何内容
*** selenium.common.exceptions.TimeoutException: Message:
我的硒版本是硒==3.141.0
解决方案
driver = webdriver.Chrome()
driver.get(
'chrome://settings/content/siteDetails?site=https%3A%2F%2Fwww.google.com')
temp= driver.execute_script(
"return document.querySelector('settings-ui').shadowRoot.querySelector('settings-main#main').shadowRoot.querySelector('settings-basic-page')")
rules = driver.execute_script(
"return arguments[0].shadowRoot.querySelector('settings-privacy-page').shadowRoot.querySelector('settings-animated-pages#pages settings-subpage site-details').shadowRoot.querySelector('div.list-frame:not(div>div.list-frame)')", temp)
location = driver.execute_script(
"return arguments[0].querySelector('site-details-permission[label=\"Location\"]').shadowRoot.querySelector('#permission')", rules)
camera = driver.execute_script(
"return arguments[0].querySelector('site-details-permission[label=\"Camera\"]').shadowRoot.querySelector('#permission')", rules)
location.click()
location.find_element_by_id("allow").click()
camera.click()
camera.find_element_by_id("block").click()
它在 shadowRoot 内部,因此您必须使用执行脚本并遍历每个影子根。在上面的代码中,您只需更改“位置”行中的标签即可更改其他规则,因为“规则”对象是所有其他规则的父对象。
推荐阅读
- push-notification - 处理通知数据而不点击 ionic 3 中的通知(一个信号推送通知)
- windows - notepad++显示奇怪符号时如何识别使用的是什么编码语言?
- android - 如何在 PowerShell 中创建分离的后台进程。需要在 AzureDevOps 管道任务中创建它
- mapbox - 如何将我的地图字体更改为 Noto Kufi 阿拉伯语?
- python - 我如何获得opencv中所有对象的所有像素?
- python - 无法将 spyder 更新到 4.0.0b2
- c# - 从 .txt 文件中删除所有行,以特定单词开头的行除外
- aws-lambda - 我可以登录,但页面刷新会让我退出
- android - 默认 sharedpreferences 不会在活动之间共享
- excel - 如何使用 Selenium 和 VBA 从 PDF 中获取特定语句