问题描述
我想在 Yahoo Stock History 页面中找到时间选择按钮:
元素的快照: ![在此处输入图片说明][2]
webdriverwait(browser,180).until(EC.presence_of_element_located((By.XPATH,'//svg[@class="Va(m)! Mstart(8px) Stk($linkColor) Fill($linkColor) daterangeBtn:h_Fill($linkActiveColor)
button1 = browser.find_element(By.XPATH,'//svg[@class="Va(m)! Mstart(8px) Stk($linkColor) Fill($linkColor) daterangeBtn:h_Fill($linkActiveColor) daterangeBtn:h_Stk($linkActiveColor) W(8px) H(8px) Cur(p)"]')
但它会显示如下错误: enter image description here 要么 enter image description here 请给我一些帮助或建议。我不知道为什么找不到。
解决方法
该元素是动态元素。因此,要单击元素,您需要为 element_to_be_clickable()
引入 WebDriverWait,您可以使用以下任一 Locator Strategies:
-
使用
CSS_SELECTOR
:driver.get("https://finance.yahoo.com/quote/AAPL/history?p=AAPL") WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"section[data-test=qsp-historical] div[data-test=dropdown] > div > span"))).click()
-
使用
XPATH
:driver.get("https://finance.yahoo.com/quote/AAPL/history?p=AAPL") WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//section[@data-test='qsp-historical']//div[@data-test='dropdown']/div/span"))).click()
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC