如何在Yahoo.finance中找到时间选择按钮?

问题描述

我想在 Yahoo Stock History 页面中找到时间选择按钮:

元素的快照: ![在此处输入图片说明][2]

但是我用xpath写的python代码无法实现,代码如下:

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