繁体   English   中英

如何在 Python 中使用 Selenium chromedriver 单击按钮

[英]How to click a button with Selenium chromedriver in Python

嗨,伙计们(对不起,我的英语提前了),我想单击一个按钮,以便从此页面https://myterna.terna.it/SunSet/Public/Pubblicazioni?filter.IdSezione=585AF7EFCA196EBBE0532B889B0A6372下载文件。 这是我的简单代码:

download_dir = 'C:/Users/Francesco.Borri/Desktop/Sunset'

options = webdriver.ChromeOptions()
prefs = {'download.default_directory' : download_dir}
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(options=options)
driver.get('https://myterna.terna.it/SunSet/Public/Pubblicazioni?filter.IdSezione=585AF7EFCA196EBBE0532B889B0A6372')

container1 = driver.find_element_by_class_name("row") #Until this class is OK
container2 = driver.find_element_by_class_name("col-sm-12 table-wrapper") # From this class NOPE

#button = container.find_element_by_class_name(CLASS_OF_THE_BUTTON)
#button.click()

该代码正确打开了页面,但它无法找到我正在寻找的所有类(其中一个里面有我珍贵的按钮)。 我研究了 html 页面源代码,发现最初缺少的类是在页面加载时从脚本(下面的屏幕截图)创建的。 我不熟悉 Javascript 和 Ajax。 有没有办法找到并点击我珍贵的按钮?

PS:现在文件已下载,但出现此未定义错误。 我什至尝试手动下载它,但我收到了同样的错误。 看来我的 chromedriver 没有下载文件的权限。
在此处输入图像描述

由于页面上有许多下载按钮,因此您需要在查找按钮时指定要下载的出版物的标题。 还建议在您尝试单击的元素上调用WebDriverWait以确保在与它交互之前它是可见的:

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

download_dir = 'C:/Users/Francesco.Borri/Desktop/Sunset'

options = webdriver.ChromeOptions()
prefs = {'download.default_directory' : download_dir}
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(options=options)
driver.get('https://myterna.terna.it/SunSet/Public/Pubblicazioni?filter.IdSezione=585AF7EFCA196EBBE0532B889B0A6372')


# Article name is "Prezzi Giornalieri Marginale Quarto Orari 20191111"

# wait on the download button for this article to exist
download_button = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//tr[td/span[text()='Prezzi Giornalieri Marginale Quarto Orari 20191111']]/td/div/a[contains(@class, 'download')]")))

# click the link to download
download_button.click()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM