good
This commit is contained in:
121
main.py
Normal file
121
main.py
Normal file
@@ -0,0 +1,121 @@
|
||||
import sys
|
||||
import time
|
||||
import logging
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.firefox.service import Service as FirefoxService
|
||||
from selenium.webdriver.firefox.options import Options as FirefoxOptions
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
|
||||
# Настройка логирования в терминал
|
||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||
|
||||
def setup_driver(download_dir):
|
||||
"""Настраивает и возвращает веб-драйвер с опциями для загрузки файлов."""
|
||||
try:
|
||||
firefox_options = FirefoxOptions()
|
||||
firefox_options.set_preference("browser.download.folderList", 2)
|
||||
firefox_options.set_preference("browser.download.dir", download_dir)
|
||||
firefox_options.set_preference("browser.download.useDownloadDir", True)
|
||||
firefox_options.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
|
||||
# firefox_options.add_argument("--headless")
|
||||
firefox_options.binary_location = r"C:\Program Files\Mozilla Firefox\firefox.exe"
|
||||
logging.info("Запуск Firefox драйвера...")
|
||||
driver = webdriver.Firefox(options=firefox_options)
|
||||
driver.set_page_load_timeout(300) # Timeout для загрузки страницы
|
||||
logging.info("Драйвер запущен успешно.")
|
||||
return driver
|
||||
except Exception as e:
|
||||
logging.error(f"Ошибка при настройке драйвера: {e}")
|
||||
raise
|
||||
|
||||
def log_page_content(driver):
|
||||
"""Логирует содержимое страницы в терминал."""
|
||||
try:
|
||||
title = driver.title
|
||||
logging.info(f"Заголовок страницы: {title}")
|
||||
# Попробуем найти основной контент
|
||||
try:
|
||||
main_content = driver.find_element(By.TAG_NAME, 'h1').text
|
||||
logging.info(f"Основной заголовок: {main_content}")
|
||||
except:
|
||||
logging.info("Основной заголовок не найден.")
|
||||
logging.info("Логирование содержимого завершено.")
|
||||
except Exception as e:
|
||||
logging.error(f"Ошибка при получении содержимого страницы: {e}")
|
||||
|
||||
def upload_file(driver, file_path, selector='input[type="file"]', by=By.CSS_SELECTOR):
|
||||
"""Загружает файл в input по селектору."""
|
||||
try:
|
||||
# Сначала попробуем кликнуть на видимую область загрузки
|
||||
try:
|
||||
drop_area = driver.find_element(By.CSS_SELECTOR, '.upload-area, .drop-zone, [data-upload]')
|
||||
drop_area.click()
|
||||
time.sleep(1)
|
||||
except:
|
||||
pass
|
||||
file_input = WebDriverWait(driver, 10).until(EC.presence_of_element_located((by, selector)))
|
||||
file_input.send_keys(file_path)
|
||||
logging.info(f"Файл загружен: {file_path}")
|
||||
except Exception as e:
|
||||
logging.error(f"Ошибка при загрузке файла {file_path}: {e}")
|
||||
|
||||
def close_cookie_banner(driver):
|
||||
"""Закрывает cookie-баннер, если он есть."""
|
||||
try:
|
||||
logging.info("Попытка закрыть cookie-баннер...")
|
||||
logging.info("Ищу кнопки...")
|
||||
buttons = driver.find_elements(By.TAG_NAME, 'button')
|
||||
logging.info(f"Найдено кнопок: {len(buttons)}")
|
||||
for button in buttons:
|
||||
text = button.text.lower()
|
||||
logging.info(f"Кнопка: {text}")
|
||||
if 'принять' in text or 'accept' in text or 'ok' in text or 'соглас' in text:
|
||||
button.click()
|
||||
logging.info("Cookie-баннер закрыт.")
|
||||
time.sleep(1)
|
||||
return
|
||||
# Если не нашли, попробуем по классу или id
|
||||
try:
|
||||
driver.find_element(By.ID, 'cookie-accept').click()
|
||||
logging.info("Cookie-баннер закрыт по ID.")
|
||||
except:
|
||||
try:
|
||||
driver.find_element(By.CLASS_NAME, 'cookie-accept').click()
|
||||
logging.info("Cookie-баннер закрыт по классу.")
|
||||
except:
|
||||
logging.info("Cookie-баннер не найден.")
|
||||
except Exception as e:
|
||||
logging.error(f"Ошибка при закрытии cookie-баннера: {e}")
|
||||
|
||||
def main():
|
||||
url = "https://convertio.co/ru/document-converter/"
|
||||
file_path = "c:\\Users\\jze9\\Documents\\git\\test-loderweb\\test.txt"
|
||||
download_dir = "C:\\Users\\jze9\\Downloads" # Укажите путь для загрузок
|
||||
|
||||
driver = setup_driver(download_dir)
|
||||
try:
|
||||
logging.info(f"Переход на страницу: {url}")
|
||||
driver.get(url)
|
||||
logging.info("Страница загружена.")
|
||||
time.sleep(5) # Ждем загрузки
|
||||
|
||||
# close_cookie_banner(driver) # Закрываем cookie-баннер
|
||||
|
||||
log_page_content(driver)
|
||||
|
||||
# Загрузить файл
|
||||
upload_file(driver, file_path)
|
||||
|
||||
# Возможно, нажать кнопку конвертации, если нужно
|
||||
# click_button(driver, 'button.convert') # Пример селектора
|
||||
|
||||
time.sleep(300) # Ждем дольше для симуляции
|
||||
input("Нажмите Enter для выхода...") # Чтобы браузер не закрывался сразу
|
||||
finally:
|
||||
logging.info("Программа завершена, браузер остаётся открытым.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user