good
This commit is contained in:
1
.python-version
Normal file
1
.python-version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.14
|
||||||
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()
|
||||||
9
pyproject.toml
Normal file
9
pyproject.toml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[project]
|
||||||
|
name = "test-loderweb"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = "Add your description here"
|
||||||
|
readme = "README.md"
|
||||||
|
requires-python = ">=3.14"
|
||||||
|
dependencies = [
|
||||||
|
"selenium",
|
||||||
|
]
|
||||||
52
test.txt
Normal file
52
test.txt
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
|
qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqwe
|
||||||
207
uv.lock
generated
Normal file
207
uv.lock
generated
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
version = 1
|
||||||
|
revision = 3
|
||||||
|
requires-python = ">=3.14"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "attrs"
|
||||||
|
version = "25.4.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "certifi"
|
||||||
|
version = "2026.1.4"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cffi"
|
||||||
|
version = "2.0.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "pycparser", marker = "implementation_name != 'PyPy'" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "h11"
|
||||||
|
version = "0.16.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "idna"
|
||||||
|
version = "3.11"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "outcome"
|
||||||
|
version = "1.3.0.post0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "attrs" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/98/df/77698abfac98571e65ffeb0c1fba8ffd692ab8458d617a0eed7d9a8d38f2/outcome-1.3.0.post0.tar.gz", hash = "sha256:9dcf02e65f2971b80047b377468e72a268e15c0af3cf1238e6ff14f7f91143b8", size = 21060, upload-time = "2023-10-26T04:26:04.361Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/55/8b/5ab7257531a5d830fc8000c476e63c935488d74609b50f9384a643ec0a62/outcome-1.3.0.post0-py2.py3-none-any.whl", hash = "sha256:e771c5ce06d1415e356078d3bdd68523f284b4ce5419828922b6871e65eda82b", size = 10692, upload-time = "2023-10-26T04:26:02.532Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pycparser"
|
||||||
|
version = "2.23"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pysocks"
|
||||||
|
version = "1.7.1"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/bd/11/293dd436aea955d45fc4e8a35b6ae7270f5b8e00b53cf6c024c83b657a11/PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0", size = 284429, upload-time = "2019-09-20T02:07:35.714Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/8d/59/b4572118e098ac8e46e399a1dd0f2d85403ce8bbaad9ec79373ed6badaf9/PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5", size = 16725, upload-time = "2019-09-20T02:06:22.938Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "selenium"
|
||||||
|
version = "4.39.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "certifi" },
|
||||||
|
{ name = "trio" },
|
||||||
|
{ name = "trio-websocket" },
|
||||||
|
{ name = "typing-extensions" },
|
||||||
|
{ name = "urllib3", extra = ["socks"] },
|
||||||
|
{ name = "websocket-client" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/af/19/27c1bf9eb1f7025632d35a956b50746efb4b10aa87f961b263fa7081f4c5/selenium-4.39.0.tar.gz", hash = "sha256:12f3325f02d43b6c24030fc9602b34a3c6865abbb1db9406641d13d108aa1889", size = 928575, upload-time = "2025-12-06T23:12:34.896Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/58/d0/55a6b7c6f35aad4c8a54be0eb7a52c1ff29a59542fc3e655f0ecbb14456d/selenium-4.39.0-py3-none-any.whl", hash = "sha256:c85f65d5610642ca0f47dae9d5cc117cd9e831f74038bc09fe1af126288200f9", size = 9655249, upload-time = "2025-12-06T23:12:33.085Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sniffio"
|
||||||
|
version = "1.3.1"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sortedcontainers"
|
||||||
|
version = "2.4.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "test-loderweb"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = { virtual = "." }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "selenium" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.metadata]
|
||||||
|
requires-dist = [{ name = "selenium" }]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "trio"
|
||||||
|
version = "0.32.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "attrs" },
|
||||||
|
{ name = "cffi", marker = "implementation_name != 'pypy' and os_name == 'nt'" },
|
||||||
|
{ name = "idna" },
|
||||||
|
{ name = "outcome" },
|
||||||
|
{ name = "sniffio" },
|
||||||
|
{ name = "sortedcontainers" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/d8/ce/0041ddd9160aac0031bcf5ab786c7640d795c797e67c438e15cfedf815c8/trio-0.32.0.tar.gz", hash = "sha256:150f29ec923bcd51231e1d4c71c7006e65247d68759dd1c19af4ea815a25806b", size = 605323, upload-time = "2025-10-31T07:18:17.466Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/41/bf/945d527ff706233636c73880b22c7c953f3faeb9d6c7e2e85bfbfd0134a0/trio-0.32.0-py3-none-any.whl", hash = "sha256:4ab65984ef8370b79a76659ec87aa3a30c5c7c83ff250b4de88c29a8ab6123c5", size = 512030, upload-time = "2025-10-31T07:18:15.885Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "trio-websocket"
|
||||||
|
version = "0.12.2"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "outcome" },
|
||||||
|
{ name = "trio" },
|
||||||
|
{ name = "wsproto" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/d1/3c/8b4358e81f2f2cfe71b66a267f023a91db20a817b9425dd964873796980a/trio_websocket-0.12.2.tar.gz", hash = "sha256:22c72c436f3d1e264d0910a3951934798dcc5b00ae56fc4ee079d46c7cf20fae", size = 33549, upload-time = "2025-02-25T05:16:58.947Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/c7/19/eb640a397bba49ba49ef9dbe2e7e5c04202ba045b6ce2ec36e9cadc51e04/trio_websocket-0.12.2-py3-none-any.whl", hash = "sha256:df605665f1db533f4a386c94525870851096a223adcb97f72a07e8b4beba45b6", size = 21221, upload-time = "2025-02-25T05:16:57.545Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "typing-extensions"
|
||||||
|
version = "4.15.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "urllib3"
|
||||||
|
version = "2.6.3"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.optional-dependencies]
|
||||||
|
socks = [
|
||||||
|
{ name = "pysocks" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "websocket-client"
|
||||||
|
version = "1.9.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", size = 70576, upload-time = "2025-10-07T21:16:36.495Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wsproto"
|
||||||
|
version = "1.3.2"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "h11" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/c7/79/12135bdf8b9c9367b8701c2c19a14c913c120b882d50b014ca0d38083c2c/wsproto-1.3.2.tar.gz", hash = "sha256:b86885dcf294e15204919950f666e06ffc6c7c114ca900b060d6e16293528294", size = 50116, upload-time = "2025-11-20T18:18:01.871Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/a4/f5/10b68b7b1544245097b2a1b8238f66f2fc6dcaeb24ba5d917f52bd2eed4f/wsproto-1.3.2-py3-none-any.whl", hash = "sha256:61eea322cdf56e8cc904bd3ad7573359a242ba65688716b0710a5eb12beab584", size = 24405, upload-time = "2025-11-20T18:18:00.454Z" },
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user