无法通过 Selenium 和 Chromium 访问最新版本的 Google Chrome 浏览器

Can't access the latest version xpath of Google Chrome through Selenium and Chromium

提问人:Xelti 提问时间:7/12/2023 最后编辑:Ajeet VermaXelti 更新时间:7/13/2023 访问量:71

问:

当我访问该网站并尝试通过 Xpath 或其他渠道访问最新版本的 Google 时,我无法访问它。chrome://settings/help

我只想获取最新版本的 Chrome 的字符串。

是否有任何原因或具体情况无法识别 xpath?

错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="main"]//settings-about-page//settings-section[1]/div[2]/div[2]/div[2]"} (Session info: chrome=114.0.5735.199);

请。帮助。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import time

service = Service(executable_path="chromedriver")
options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
driver = webdriver.Chrome(service=service, options=options)

driver.get('chrome://settings/help')
time.sleep(5)
update_check = driver.find_element(By. XPATH, '//*[@id="main"]//settings-about-page//settings-section[1]/div[2]/div[2]/div[2]').text
print(update_check)
python selenium-webdriver xpath chromium shadow-root

评论

0赞 Ajeet Verma 7/12/2023
你能添加你得到的错误的完整回溯吗?
0赞 Xelti 7/12/2023
@AjeetVerma selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:“xpath”,“selector”:“//*[@id=”main“]//settings-about-page//settings-section[1]/div[2]/div[2]/div[2]”} (会话信息: chrome=114.0.5735.199);有关此错误的文档,请访问:selenium.dev/documentation/webdriver/troubleshooting/...
0赞 Ajeet Verma 7/12/2023
该错误清楚地表明给定的 XPATH 在页面上不正确/不可用
0赞 Ajeet Verma 7/12/2023
请始终提供最低限度的可重现工作/代码片段,以便重现错误,从而为您提供解决错误的方法。stackoverflow.com/help/minimal-reproducible-example
0赞 Xelti 7/12/2023
@AjeetVerma是的。但我不知道为什么......有没有其他方法可以访问该路径?

答:

0赞 Ajeet Verma 7/12/2023 #1

鉴于您的XPATH,我想您正在尝试在计算机上获取已安装的Chrome版本的文本。

由于页面高度嵌入了许多元素,因此无法使用通常的定位器策略(如 XAPTH、CSS 选择器、ID 等)定位嵌入其中的元素。shadow-rootshadow-root

这是你如何做到的:

import time
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
driver = webdriver.Chrome(options=options)

driver.get('chrome://settings/help')

time.sleep(2)
update_check = driver.execute_script("return document.querySelector('settings-ui').shadowRoot.querySelector('settings-main').shadowRoot.querySelector('settings-about-page').shadowRoot.querySelectorAll('settings-section')[0].querySelector('div.secondary').getInnerHTML();")
print(update_check)

输出:

Version 114.0.5735.199 (Official Build)  (64-bit)

引用:

  1. Selenium:如何在html页面代码的影子根中获取元素?
  2. 如何使用Selenium点击Visa汇率计算器上的按钮?
  3. 抓取 #shadow 根 Web 元素中的元素