【问题标题】:Python selenium clicking a buttonPython selenium 单击按钮
【发布时间】:2021-03-18 16:28:42
【问题描述】:

我正在尝试编写一个 python 脚本来使用以下链接中的“下载 CSV”按钮自动下载 csv: https://chartink.com/screener/copy-supertrend-negative-breakout-1103

from selenium import webdriver
import pandas as pd

DRIVER_PATH = r"C:\Users\u123456\Downloads\chromedriver\chromedriver.exe"
d = webdriver.Chrome(executable_path=DRIVER_PATH)
d.get('https://chartink.com/screener/copy-supertrend-negative-breakout-1103')
download_button = pd.read_html(d.find_element_by_class_name('btn btn-default buttons-excel buttons-html5 btn-primary'))[0]
#table = pd.read_html(d.find_element_by_id('DataTables_Table_0').get_attribute('outerHTML'))[0]
print(download_button)

我没有找到有关如何单击该按钮并将其下载到本地驱动器的任何线索。任何帮助将不胜感激。

编辑:我尝试了下面的代码并让它工作,现在我想知道我们是否可以找到文件名并将其加载到 pandas 数据帧中。

element = d.find_element_by_link_text("Download csv")
element.click()

谢谢, 麦克

【问题讨论】:

    标签: python selenium-webdriver xpath css-selectors linktext


    【解决方案1】:

    要点击元素下载csv,您可以使用以下任一Locator Strategies

    • 使用link_text

      driver.find_element_by_link_text("Download csv").click()
      
    • 使用css_selector

      driver.find_element_by_css_selector("a.btn.btn-default.buttons-excel.buttons-html5.btn-primary[value='Download backtest']").click()
      
    • 使用xpath

      driver.find_element_by_xpath("//a[@value='Download backtest' and text()='Download csv']").click()
      

    理想情况下,点击您需要为WebDriverWait 诱导element_to_be_clickable() 的元素,您可以使用以下任一Locator Strategies

    • 使用LINK_TEXT

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Download csv"))).click()
      
    • 使用CSS_SELECTOR:

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn.btn-default.buttons-excel.buttons-html5.btn-primary[value='Download backtest']"))).click()
      
    • 使用XPATH:

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@value='Download backtest' and text()='Download csv']"))).click()
      
    • 注意:您必须添加以下导入:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      

    【讨论】:

    • 谢谢德班扬。能否请您告诉我如何将此文件动态读入数据框?
    • 嗨@Debanjan,我自己找到了解决我最初问题的方法,但也感谢您的回复,但我正在寻找下一步的解决方案。
    • @mrcool4 根据您的问题标题 ....Python selenium 单击按钮.. 我认为您的问题是单击按钮。这就是答案。随意根据您的新要求提出新问题。 StackOverflow 贡献者将很乐意为您提供帮助。
    • 接受了您的回答,由于有人故意否定了整个帖子,您能否也请您投票赞成这个问题?
    猜你喜欢
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 2019-03-17
    • 2021-01-31
    • 2020-07-30
    • 2021-03-31
    • 2020-08-06
    • 2021-08-27
    相关资源
    最近更新 更多