На веб-сайте я нажимаю кнопку, которая открывает небольшое подокно
Здесь вы упомянули, что открываете новое подокно, в котором нужно нажать накнопка для скачивания.Но вы не переключаетесь на это окно.Следовательно, невозможно найти этот элемент.
Используйте driver.window_handles
, чтобы получить указатель на открытое окно и переключитесь на это окно, используя driver.switch_to_window()
, затем попробуйте нажать кнопку для загрузки.
ВыВы можете увидеть, как обрабатывать несколько окон в Python Selen в этом стеке потока ссылка .
РЕДАКТИРОВАТЬ:
Так что, похоже, были некоторые проблемы в вашемкод.Как и локатор для кнопок загрузки рядом с шахматной доской и одна после этого были неправильными.Я исправил локатор с помощью правильного xpath
, а также внес небольшие изменения в chrome_options
.Вам просто нужно изменить download.defualt_directory
на путь в вашей машине, и следующий код будет работать:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_experimental_option("prefs", {
"download.default_directory": r"C:\Users\Thanthu Nair\Downloads\Test",
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
})
driver = webdriver.Chrome("./chromedriver", options=chrome_options)
website = "https://www.chess.com/ccc"
driver.get(website) # loads the page
driver.maximize_window()
# This closes a sub-window that opens automatically
element = driver.find_element_by_class_name("form-button-component")
element.click()
download = driver.find_element_by_xpath("//i[@title='Download']")
download.click()
# Click to download
download.find_element_by_xpath("//button[normalize-space()='Download Game (PGN)']").click()