似乎无法使用 selenium 通过 XPATH 选择日期范围选择器

我正在尝试从http://covid.gov.pk/stats/pakistan抓取数据。我希望脚本能够单击日期范围选择器来更改日期,但我似乎无法选择它,我正在使用的 XPATH 如下。


//*[@id="body"]/div/div/div[1]/div[2]/div/div[1]/div[1]/div[1]/div/lego-report/lego-canvas-container/div/file-drop-zone/span/content-section/canvas-component[66]

我正在使用的Python脚本


from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC


driver = webdriver.Chrome()

driver.implicitly_wait(30)

driver.get("http://covid.gov.pk/stats/pakistan")


#wait for Page to load

WebDriverWait(driver, 30, ).until(EC.invisibility_of_element((By.XPATH, "//div[@id=\"preloader\"]")))


#select date range picker

element = driver.find_element_by_xpath("//*[@id=\"body\"]/div/div/div[1]/div[2]/div/div[1]/div[1]/div[1]/div/lego-report/lego-canvas-container/div/file-drop-zone/span/content-section/canvas-component[66]")

element.click()

我遇到的错误如下


无法定位元素:{"method":"xpath","selector":"//*[@id="body"]/div/div/div[1]/div[2]/div/div[1 ]/div[1]/div[1]/div/lego-report/lego-canvas-container/div/file-drop-zone/span/content-section/canvas-component[66]"} (会话信息:铬=81.0.4044.113)


我似乎无法弄清楚到底是什么不起作用,我通过使用 chrome 中的开发人员工具检查元素来复制 xpath。


富国沪深
浏览 81回答 1
1回答

慕的地6264312

日期选择器元素存在于 . 中iframe。您需要切换iframe第一个才能访问日期选择器。Induce WebDriverWait() 和 wait for frame_to_be_available_and_switch_to_it() 并使用以下 css 选择器。然后您可以使用以下 xpath 单击日期选择器。from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECdriver = webdriver.Chrome()driver.get("http://covid.gov.pk/stats/pakistan")#wait for Page to loadWebDriverWait(driver,30).until(EC.invisibility_of_element((By.XPATH, "//div[@id='preloader']")))WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,".pak-stats-ifrm")))#select date range pickerelement = driver.find_element_by_xpath("//div[@class='content-holder ng-scope']")element.click()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5