Selenium在网页中找不到元素

2024-09-30 22:15:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试自动化一些web输入时遇到了一些问题,但首先我需要单击一些按钮,但我不能这样做。我试过很多东西,但都做不完:“(

网页:https://vacunacovid.catsalut.gencat.cat/

我无法通过我拥有的图像代码:
rom selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time

# browser config
options = webdriver.ChromeOptions()
options.add_argument('--start-maximized')
options.add_argument('--disable-extensions')
driver_path= "/C:/chromedriver_linux64/chromedriver" # este es el driver del navegador https://chromedriver.chromium.org/
driver = webdriver.Chrome(driver_path,chrome_options=options)

#starting screen in optimal position
driver.set_window_position(2000,0)
driver.maximize_window()
time.sleep(1)

#getting website
driver.get("https://vacunacovid.catsalut.gencat.cat/")

#go to the element if its clickable
WebDriverWait(driver, 5)\
    .until(EC.element_to_be_clickable((By.XPATH, BLABLABLA)))\
    .click()

通过这个阴影(打开)找不到任何东西,我该怎么做? https://i.stack.imgur.com/it2nQ.png


Tags: fromhttpsimportsupportdriverseleniumchromedrivercat
1条回答
网友
1楼 · 发布于 2024-09-30 22:15:35

它位于Shadow-dom#shadow root(open)下,因此您没有确切提到要单击哪个按钮,因此我正在单击第一个按钮Demana o modifica cita

#adding some wait for application to load properly
sleep(5)

您只需获取desire元素的JS路径,如下所示,并返回该元素的元素

按F12->;元素选项卡->;右键单击(在图元上)->;复制JS路径

javascript = 'return document.querySelector("body > vaccinapp-app").shadowRoot.querySelector("#pages > vaccinapp-shell").shadowRoot.querySelector("#main-shell-content > appointment-shell").shadowRoot.querySelector("#appointment-shell-content > appointment-onboarding").shadowRoot.querySelector("#dismiss-btn").shadowRoot.querySelector("#button")'

通过使用execute_script将访问shadowroot(open)下的元素

element = driver.execute_script(javascript)
element.click()

代码

options = webdriver.ChromeOptions()
options.add_argument(' start-maximized')
options.add_argument(' disable-extensions')
driver_path= "/C:/chromedriver_linux64/chromedriver" 
driver = webdriver.Chrome(driver_path,chrome_options=options)

#starting screen in optimal position
driver.set_window_position(2000,0)
driver.maximize_window()
time.sleep(1)

#getting website
driver.get("https://vacunacovid.catsalut.gencat.cat/")
sleep(5)
javascript = 'return document.querySelector("body > vaccinapp-app").shadowRoot.querySelector("#pages > vaccinapp-shell").shadowRoot.querySelector("#main-shell-content > appointment-shell").shadowRoot.querySelector("#appointment-shell-content > appointment-onboarding").shadowRoot.querySelector("#dismiss-btn").shadowRoot.querySelector("#button")'
element = driver.execute_script(javascript)
element.click()

For referencecheck here

相关问题 更多 >