Первый взгляд на серию «Последний выпуск» — автоматическое тестирование Python + Playwright — 21 — обработка перетаскивания мышью — дополнительная глава
Первый взгляд на серию «Последний выпуск» — автоматическое тестирование Python + Playwright — 21 — обработка перетаскивания мышью — дополнительная глава

1. Введение

Брат Хун уже упоминал о механизме защиты от сканирования. После добавления различных параметров все еще возникала проблема с загрузкой файла сценария js. Иногда брат Хун, казалось, находил способ решить эту проблему, сказал брат Хун. чтобы попробовать. Давайте посмотрим, сработает ли это, на случай, если это произойдет. В результате брат Хун попробовал, и результат действительно был хороший, но брат Хун смог запустить его в первый раз, но не после этого. Затем он закрыл редактор и перезапустил его, и брат Хун снова догадался, что это сработало. Возможно, это проблема с буферизацией, но конкретная причина по-прежнему не найдена. Поэтому я добавлю обновление, чтобы записать, как это решить. А недавно некоторые пользователи сканера отправили брату Хонгу личное сообщение: «При использовании драматурга было упомянуто, что драматург — это браузер, который по умолчанию открывается в режиме инкогнито. Многие веб-сайты имеют механизмы защиты от сканирования, и эти функции не работают должным образом при открытии в режиме инкогнито. режим использования. Спросите брата Хонга, есть ли у него какие-нибудь хорошие идеи. Брат Хун ответил, что на данный момент хорошего решения нет, и он не знает, поможет ли им решение брата Хун или будет ли оно иметь для них справочную ценность.

2. Запустите режим браузера.

playwright предоставляет метод launch_persistent_context для запуска браузера, который может запускать браузер в режиме не инкогнито.

Запуск браузера в режиме инкогнито подходит для тех, кто занимается автоматизированным тестированием.

Запуск браузера в режиме не инкогнито подходит некоторым пользователям сканера.

2.1 Запускаем браузер в режиме инкогнито

Метод launch() запускает браузер в режиме инкогнито.

Справочный код выглядит следующим образом:

Язык кода:javascript
копировать
# coding=utf-8🔥

# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.

# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-10-10
@author: Пекин-Хонге   Группа связи QQ: 705269076
Паблик аккаунт: Пекин Хонге
Project: 《Первый взгляд на серию «Последний выпуск» — автоматическое тестирование Python + Playwright — 21 — обработка перетаскивания мышью — дополнительная глава
'''

# 3. Импортировать модули
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://www.cnblogs.com/du-hong")

    # do ....
    page.pause()
    browser.close()

При запуске браузера в режиме инкогнито в правом верхнем углу браузера появится «Режим инкогнито», как показано на рисунке ниже:

2.2 Запустите браузер в режиме не инкогнито.

Если веб-сайт распознается или отслеживается, а режим инкогнито использовать невозможно, вы можете использовать метод launch_persistent_context() для запуска браузера в режиме неинкогнито.

Соответствующее описание параметра:

  • user_data_dir: каталог пользовательских данных, этот параметр является обязательным, вы можете настроить каталог
  • Accept_downloads: Получать события загрузки
  • безголовый: устанавливать ли безголовый режим
  • канал: указывает тип браузера, по умолчанию — Chrome.

Справочный код выглядит следующим образом:

Язык кода:javascript
копировать
# coding=utf-8🔥

# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.

# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-10-10
@author: Пекин-Хонге   Группа связи QQ: 705269076
Паблик аккаунт: Пекин Хонге
Project: 《Первый взгляд на серию «Последний выпуск» — автоматическое тестирование Python + Playwright — 21 — обработка перетаскивания мышью — дополнительная глава
'''

# 3. Импортировать модули
from playwright.sync_api import sync_playwright

with sync_playwright() as p:

    browser = p.chromium.launch_persistent_context(
        # Укажите адрес локального кэша пользователя
        user_data_dir=f"C:\\Users\\DELL\\Desktop\\Chrome\\test",
        # Получать события загрузки
        accept_downloads=True,
        # настраивать GUI модель
        headless=False,
        bypass_csp=True,
        slow_mo=1000,
        channel="chrome"
    )
    page = browser.new_page()
    page.goto("https://www.cnblogs.com/du-hong")

    # do ....
    page.pause()
    browser.close()

Брат Хонг обнаружил, что после запуска приведенного выше кода появится дополнительная пустая страница. Как показано ниже:

Войдя в метод launch_persistent_context, мы обнаружили, что использование метода launch_persistent_context автоматически открывает страницу вкладки, а следующий код браузера.new_page() повторно открывает новый объект страницы. Вот почему есть дополнительная пустая страница.

Решение простое: просто удалите код браузера.new_page(). По умолчанию откройте объект вкладки напрямую.

Справочный код выглядит следующим образом:

Язык кода:javascript
копировать
# coding=utf-8🔥

# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.

# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-10-10
@author: Пекин-Хонге   Группа связи QQ: 705269076
Паблик аккаунт: Пекин Хонге
Project: 《Первый взгляд на серию «Последний выпуск» — автоматическое тестирование Python + Playwright — 21 — обработка перетаскивания мышью — дополнительная глава
'''

# 3. Импортировать модули
from playwright.sync_api import sync_playwright

with sync_playwright() as p:

    browser = p.chromium.launch_persistent_context(
        # Укажите адрес локального кэша пользователя
        user_data_dir=f"C:\\Users\\DELL\\Desktop\\Chrome\\test",
        # Получать события загрузки
        accept_downloads=True,
        # настраивать GUI модель
        headless=False,
        bypass_csp=True,
        slow_mo=1000,
        channel="chrome"
    )
    page = browser.pages[0]
    page.goto("https://www.cnblogs.com/du-hong")

    # do ....
    page.pause()
    browser.close()

Запустите код, как показано ниже:

3. Проект реального боя

Здесь Хонгге также использует предыдущий пример для демонстрации, который является примером статьи, в которой в конце статьи упоминается антисканер: Ctrip, слайд на странице проверки номера мобильного телефона, для выполнения реального проекта. Как показано ниже:

3.1 Разработка кода

Обратитесь к ранее упомянутому методу для разработки кода следующим образом:

3.2 Справочный код
Язык кода:javascript
копировать
# coding=utf-8🔥

# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.

# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-10-10
@author: Пекин-Хонге   Группа связи QQ: 705269076
Паблик аккаунт: Пекин Хонге
Project: 《Первый взгляд на серию «Последний выпуск» — автоматическое тестирование Python + Playwright — 21 — обработка перетаскивания мышью — дополнительная глава
'''

# 3. Импортировать модули
from playwright.sync_api import Playwright, sync_playwright, expect

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch_persistent_context(
        # Укажите адрес локального кэша пользователя
        user_data_dir=f"C:\\Users\\DELL\\Desktop\\Chrome\\test",
        # Получать события загрузки
        accept_downloads=True,
        # настраивать GUI модель
        headless=False,
        bypass_csp=True,
        slow_mo=1000,
        channel="chrome"
    )
    page = browser.pages[0]
    page.goto("https://passport.ctrip.com/user/member/fastOrder")
    page.wait_for_timeout(2000)
    #Получаем положение кнопки перетаскивания и перетаскиваем  //*[@id="slider"]/div[1]/div[2]
    dropbutton=page.locator("//*[@id='slider']/div[1]/div[2]")
    box=dropbutton.bounding_box()
    page.mouse.move(box['x']+box['width']/2,box['y']+box[ 'height']/2)
    page.mouse.down()
    mov_x=box['x']+box['width']/2+280
    page.mouse.move(mov_x,box['y']+box[ 'height']/2)
    page.mouse.up()
    page.wait_for_timeout(3000)
    browser.close()

with sync_playwright() as playwright:
    run(playwright)
3.3 Запуск кода

1. Запустите код, щелкните правой кнопкой мыши «Выполнить тест», и вывод консоли будет таким, как показано ниже:

2. Действие браузера на компьютере после запуска кода (хорошо видно действие после скольжения,Появляться“Проверка успешна, пройдена”слова,Вместо появившегося ранее антикраулерного механизма,Проверка выбора слова снова всплывает). Как показано ниже:

Хорошо, теперь все готово, и проблема решена.

4. Резюме

1. Почему нельзя использовать браузер.new_context() для создания контекста для объекта браузера, созданного с помощью launch_persistent_context?

Поскольку launch_persistent_context буквально означает объект контекста контекста, контекст не может быть создан, можно создать только объект страницы.

2. Какова роль параметра пути user_data_dir?

user_data_dir указывает каталог кэша пользовательских данных для запуска браузера. Когда указан новый каталог, файл кэша будет автоматически создан при запуске браузера. Откройте каталог C:\Users\\DELL\Desktop\Chrome\test, и вы увидите загруженный файл кэша браузера. Как показано ниже:

3.Может ли user_data_dir запомнить статус входа пользователя?

user_data_dir — это пользовательские данные, которые вы определяете при открытии браузера и сохраняете их, включая файлы cookie пользователя, поэтому, пока вы входите в систему, они будут автоматически сохраняться. Таким образом, вам нужно только ввести код, чтобы открыть веб-сайт. Если вы не можете автоматически войти в систему с помощью кода (могут быть какие-то коды проверки или что-то в этом роде), вы можете войти в систему вручную после точки останова, и файлы cookie будут запомнены. Вам не нужно входить в систему в следующий раз, когда вы откроете код.

4. Почему я не могу оставаться на этом сайте после выполнения вашего руководства?

Сможете ли вы оставаться в системе, главным образом, зависит от срока действия файлов cookie вашего веб-сайта. Некоторые веб-сайты становятся недействительными после закрытия браузера, например веб-сайты некоторых банков. Вам нужно только закрыть окно браузера, и в следующий раз вам нужно будет снова войти в систему. . Проще говоря: вам нужно сделать это вручную один раз, закрыть браузер и открыть его снова, чтобы войти в систему. Если вам нужно снова войти в систему после закрытия браузера, код не сможет удержать вас в системе. На некоторых сайтах блогов, если вы войдете в систему один раз, файлы cookie будут действительны в течение нескольких месяцев. В этом случае вы можете использовать кэшированные файлы cookie, чтобы оставаться в системе.

5. Почему в других онлайн-руководствах в качестве каталога установки Chrome указывается user_data_dir?

Фактически, нет необходимости прописывать каталог установки Chrome «C:\Users\{getpass.getuser()}\AppData\Local\Google\Chrome\UserData». Если вы записываете пользовательские данные в каталог установки системы по умолчанию, то при открытии локального браузера при выполнении кода будет сообщаться об ошибке. Так что не рекомендуется!

6. Браузер Chromium запускается по умолчанию. Можно ли его поменять на другой браузер?

Браузер можно указать через параметр «канал», который поддерживает серию хрома: chromium, chrome, chrome-beta и msedge.

7. Как настроить развертывание окна?

Добавьте два параметра args=['--start-maximized'] и no_viewport=True, чтобы развернуть окно.

Язык кода:javascript
копировать
browser = p.chromium.launch_persistent_context(
    # Укажите адрес локального кэша пользователя
    user_data_dir=f"D:\chrome_userx\yoyo",
    # Получать события загрузки
    accept_downloads=True,
    # настраивать GUI модель
    headless=False,
    bypass_csp=True,
    slow_mo=1000,
    channel="chrome",
    args=['--start-maximized'],
    no_viewport=True
)

Или используйте viewport={'width':1920,'height':1080}, чтобы установить разрешение экрана.

Язык кода:javascript
копировать
browser = p.chromium.launch_persistent_context(
    # Укажите адрес локального кэша пользователя
    user_data_dir=f"D:\chrome_userx\yoyo",
    # Получать события загрузки
    accept_downloads=True,
    # настраивать GUI модель
    headless=False,
    bypass_csp=True,
    slow_mo=1000,
    channel="chrome",
    viewport={'width': 1920, 'height': 1080}
)

я участвуюНа втором этапе специального тренировочного лагеря Tencent Technology Creation 2023 года будут отмечены призовые эссе, которые разделят призовой фонд в 10 000 юаней и часы с клавиатурой.

boy illustration
Устраните проблему совместимости между версией Spring Boot и Gradle Java: возникла проблема при настройке корневого проекта «demo1» > Не удалось.
boy illustration
Научите вас шаг за шагом, как настроить Nginx.
boy illustration
Это руководство — все, что вам нужно для руководства по автономному развертыванию сервера для проектов Python уровня няни (рекомендуемый сборник).
boy illustration
Не удалось запустить docker.service — Подробное объяснение идеального решения ️
boy illustration
Настройка файлового сервера Samba в системе Linux Centos. Анализ NetBIOS (супер подробно)
boy illustration
Как настроить метод ssh в Git, как получить и отправить код через метод ssh
boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.
boy illustration
Оригинальные улучшения YOLOv8: несколько новых улучшений | Сохранение исходной информации — алгоритм отделяемой по глубине свертки (MDSConv) |
boy illustration
Второй пилот облачной разработки | Быстро поиграйте со средствами разработки на базе искусственного интеллекта
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция с нулевым кодированием и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
Решенная Ошибка | Загрузка PyTorch медленная: TimeoutError: [Errno 110] При загрузке факела истекло время ожидания — Cat Head Tiger
boy illustration
Brother OCR, библиотека с открытым исходным кодом для Python, которая распознает коды проверки.
boy illustration
Новейшее подробное руководство по загрузке и использованию последней демонстрационной версии набора данных COCO.
boy illustration
Выпущен отчет о крупной модели финансовой отрасли за 2023 год | Полный текст включен в загрузку |
boy illustration
Обычные компьютеры также могут работать с большими моделями, и вы можете получить личного помощника с искусственным интеллектом за три шага | Руководство для начинающих по локальному развертыванию LLaMA-3
boy illustration
Одной статьи достаточно для анализа фактора транскрипции SCENIC на Python (4)
boy illustration
Бросая вызов ограничениям производительности небольших видеокарт, он научит вас запускать большие модели глубокого обучения с ограниченными ресурсами, а также предоставит полное руководство по оценке и эффективному использованию памяти графического процессора!
boy illustration
Команда Fudan NLP опубликовала 80-страничный обзор крупномасштабных модельных агентов, в котором в одной статье представлен обзор текущего состояния и будущего агентов ИИ.
boy illustration
[Эксклюзив] Вы должны знать о новой функции JetBrains 2024.1 «Полнострочное завершение кода», чтобы решить вашу путаницу!
boy illustration
Краткое изложение базовых знаний о регистрации изображений 1.0