【发布时间】:2020-04-24 08:15:05
【问题描述】:
我想使用 selenium 单击一个按钮,然后在网站的下拉日期选择器上选择该按钮。
The button I wish to click is highlighted in yellow
我正在使用以下 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 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such 元素:无法定位元素: {"method":"xpath","selector":"//*[@id="datepicker-1361-7562-title"]/strong"} (会话信息:chrome=81.0.4044.122)
我一直在尝试解决此问题,但似乎无法确定我到底做错了什么,我们将不胜感激。
【问题讨论】:
-
好的,我已经意识到我的错误,经过进一步检查,我发现每次打开下拉菜单时。月/年按钮的 id 更改。我所要做的就是使用其他属性来选择元素。
标签: python selenium web-scraping