Пытался загрузить с помощью Selenium и Python файл excel, нажав кнопку на странице, но не удалось. Ниже приведен класс, извлеченный из страницы:
<div class = "tabPanel_func ts2_icon_map ts2_icon_excel" onclick = "ExportExcel('tblTS2', tsData);"\>\</div\>`
Я также хочу загрузить файл, а затем сохранить его в определенном месте на диске.
Ниже приведен мой код:
url = "http://www.aastocks.com/tc/stocks/market/high-low-stocks.aspx?catg=1&period=3&t=1"
driver = webdriver.Chrome()
driver.get(url)
Испытания кода:
driver.find_element(By.XPATH, "//\[contains(@onclick, ExportExcel('tblTS2', tsData)')\]")`
или
driver.find_element(By.XPATH, "//\*\[@class= 'tabPanel_func ts2_icon_map ts2_icon_excel'\]")`
или
driver.find_element(By.CSS_SELECTOR, "//button\[contains(@onclick,'ExportExcel('tblTS2', tsData)')\]").click()`
Все подходы провалились.
Попробуйте приведенное ниже выражение XPath:
//*[contains(@class,'tabPanel_func ts2_icon_map ts2_icon_excel')]
Объяснение XPath: поиск по всему DOM(//*
), который содержит атрибут = class
и его значение = tabPanel_func ts2_icon_map ts2_icon_excel
Выше выражение XPath найдет следующий элемент:
Ниже приведена полная строка кода для нажатия кнопки Export:
driver.find_element(By.XPATH,"//*[contains(@class,'tabPanel_func ts2_icon_map ts2_icon_excel')]").click()
Попробуйте после xpath
нажать на экспорт в Excel.
//div[contains(@onclick,'ExportExcel')]
код:
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//div[contains(@onclick,'ExportExcel')]
"))).click()
Желаемый элемент является динамическим элементом, поэтому, чтобы щелкнуть по кликабельному элементу, вам нужно вызвать WebDriverWait для element_to_be_clickable() , и вы можете использовать любую из следующих стратегий поиска:
Используя CLASS_NAME:
driver.get('http://www.aastocks.com/tc/stocks/market/high-low-stocks.aspx?catg=1&period=3&t=1')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, "ts2_icon_excel"))).click()
Использование CSS_SELECTOR:
driver.get('http://www.aastocks.com/tc/stocks/market/high-low-stocks.aspx?catg=1&period=3&t=1')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.ts2_icon_excel[onclick^='ExportExcel']"))).click()
Использование XPATH:
driver.get('http://www.aastocks.com/tc/stocks/market/high-low-stocks.aspx?catg=1&period=3&t=1')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[starts-with(@onclick, 'ExportExcel')]"))).click()
Примечание. Вы должны добавить следующие импорты:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Снимок браузера:
Я пробовал '''options.add_experimental_option("prefs", {"download.default_directory":r"D:/"}) s = Service('chromedriver.exe') driver = webdriver.Chrome(service=s, options= варианты) ''', но не удалось загрузить.
Звучит как отдельный вопрос. Не стесняйтесь поднимать новый вопрос с вашим новым требованием.
Спасибо ! Сделаем и поднимем новый вопрос для этого.
Это работает, спасибо! Что делать, если я хочу загрузить файл на определенный диск и в определенное место, а не на диск C «Загрузить»? Есть ли у вас какие-либо предложения о хороших книгах, которые охватывают эти знания, которые я могу читать и изучать, кроме переполнения стека?