无法使用python硒通过xpath查找元素

时间:2020-04-24 08:15:05

标签: python selenium web-scraping

我想单击使用硒的按钮,然后在站点的下拉日期选择器上选择该按钮。

The button I wish to click is highlighted in yellow

http://covid.gov.pk/stats/ict

我正在使用以下xpath。

// * [@ id =“ datepicker-1361-7562-title”] / strong

这是我正在使用的代码

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
from datetime import date
import time

#calculating days from first day 
d1 = date(2020, 3, 10)
dCurrent = date.today()
daysElapsed = int((dCurrent - d1).days)

#setting up driver and fetching website
driver = webdriver.Chrome()
driver.get('http://covid.gov.pk/stats/ict')

#wait for page and resources to load
WebDriverWait(driver, 25).until(EC.invisibility_of_element((By.XPATH, "//div[@id=\"preloader\"]")))
WebDriverWait(driver, 15).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//*[@id="app"]/div[2]/iframe')))


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[29]/div/div/div/div/ga-date-range-picker/lego-date-duration-control/control-layout-wrapper/button/div').click()
time.sleep(3)
driver.find_element_by_xpath('//*[@id="datepicker-1361-7562-title"]/strong').click()

问题是我可以单击下拉菜单上的其他元素,而不仅仅是此按钮。

运行代码时遇到的错误。

在check_response中 引发exception_class(消息,屏幕,堆栈跟踪)selenium.common.exceptions.NoSuchElementException:消息:没有这样的消息 元素:无法找到元素: {“方法”:“ xpath”,“选择器”:“ // * [@ id =” datepicker-1361-7562-title“] / strong”} (会话信息:chrome = 81.0.4044.122)

我一直在尝试解决此问题,但似乎无法指出我到底在做什么错,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

切换到框架并在日历上单击“开始日期”的第一部分后,您可以使用以下选择器找到“年份”按钮

driver.find_element_by_xpath('//div[@ng-model='$ctrl.calendarDateRange.startDate']//table[@class='uib-daypicker']//button[contains(@id, 'datepicker-')]').click()

如果您想点击“结束日期”部分,请更改//div[@ng-model='']的路径