В предыдущей статье мы в основном представили теоретические знания и практику использования различных методов перетаскивания. Сегодня брат Хун объясняет и делится операцией удаления полей. Например: вам нужно случайным образом выбрать фрагмент текста из кучи символов журнала, а затем щелкнуть правой кнопкой мыши, чтобы выбрать функцию извлечения.
Операция стирания поля заключается в случайном выборе фрагмента текста внутри фрагмента текста или пометке текста. Конечно, этот вход на некоторых сайтах также требует проверки слайдера и т. д.
Класс ActionChains предоставляется в селене для обработки событий мыши. В этом классе есть два метода, связанных с процессом перемещения ползунка. click_and_hold(): имитирует нажатие левой кнопки мыши на исходном элементе, щелкнув и не отпуская его; Release(): отпустите кнопку мыши. Функции этих двух функций можно понять буквально. Сегодня следите за братом Хонгом, чтобы узнать, как драматург справился с этим тестовым сценарием.
В абзаце текста случайным образом выделите небольшой абзац текста (это кажется немного безвкусным и бесполезным, но брат Хун все равно это говорит). Затем брат Хун попрактикуется в использовании заявления Ду Ньянга об отказе от ответственности и подчеркнет небольшой абзац текста.
Используйте locator.drag_to() для выполнения операций перетаскивания для реализации автоматического тестирования.
# coding=utf-8🔥
# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.
# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-07-22
@author: Пекин-Хонге
Паблик аккаунт: Пекин Хонге
Project: Первый взгляд на серию «Последний релиз»-Python+Драматургическая автоматизация тест-18-Управление перетаскиванием мыши-Часть 2
'''
# 3. Импортировать модули
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto("https://www.baidu.com/duty")
page.wait_for_timeout(1000)
page.locator("//*/p").drag_to(page.locator('//*/ul[@class="privacy-ul-gap"]/li[1]'))
# page.drag_and_drop('//*/p', '//*/ul[@class="privacy-ul-gap"]/li[1]')
page.wait_for_timeout(3000)
# page.pause()
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
1. Запустите код, щелкните правой кнопкой мыши «Выполнить тест», и вывод консоли будет таким, как показано ниже:
2. Действия браузера на компьютере после запуска кода. Как показано ниже:
Используйте page.drag_and_drop(locator, loacator) для реализации автоматического тестирования.
# coding=utf-8🔥
# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.
# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-07-22
@author: Пекин-Хонге
Паблик аккаунт: Пекин Хонге
Project: Первый взгляд на серию «Последний релиз»-Python+Драматургическая автоматизация тест-18-Управление перетаскиванием мыши-Часть 2
'''
# 3. Импортировать модули
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto("https://www.baidu.com/duty")
page.wait_for_timeout(1000)
# page.locator("//*/p").drag_to(page.locator('//*/ul[@class="privacy-ul-gap"]/li[1]'))
page.drag_and_drop('//*/p', '//*/ul[@class="privacy-ul-gap"]/li[1]')
page.wait_for_timeout(3000)
# page.pause()
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
Для точного контроля над операциями перетаскивания вы можете использовать ручные методы более низкого уровня, такие как locator.hover(), mouse.down(), mouse.move() и mouse.up(). реализовать автоматическое тестирование.
# coding=utf-8🔥
# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.
# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-07-19
@author: Пекин-Хонге
Паблик аккаунт: Пекин Хонге
Project: Первый взгляд на последнюю серию - Python+Драматургическая автоматизация тест-18-Управление перетаскиванием мыши-Часть 2
'''
# 3. Импортировать модули
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto("https://www.baidu.com/duty")
page.wait_for_timeout(1000)
page.locator('//*/p').hover()
page.mouse.down()
page.locator('//*/ul[@class="privacy-ul-gap"]/li[1]').hover()
page.mouse.up()
page.wait_for_timeout(3000)
# page.pause()
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
Здесь брат Хонг использует Ctrip в java+selenium для выполнения реального проекта, перемещая страницу проверки номера мобильного телефона. Как показано ниже:
# coding=utf-8🔥
# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.
# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-07-22
@author: Пекин-Хонге
Паблик аккаунт: Пекин Хонге
Project: Первый взгляд на серию «Последний релиз»-Python+Драматургическая автоматизация тест-18-Управление перетаскиванием мыши-Часть 2
'''
# 3. Импортировать модули
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
#Отключить обнаружение сканера, но после попытки оно не сработало
context.add_init_script(path='C:\\Users\\DELL\\Downloads\\stealth.min.js')
page = context.new_page()
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)
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
1. Запустите код, щелкните правой кнопкой мыши «Выполнить тест», и вывод консоли будет таким, как показано ниже:
2. Действия браузера на компьютере после запуска кода. Как показано ниже:
Когда брат Хун раньше тестировал java+selenium, он перешел на эту страницу. Раньше упоминался механизм проверки селена, но селен здесь не используется. Как такое могло быть? После долгой проверки информации? время, он сказал, что это противосканирующий механизм. Однако добавление в код механизма защиты от сканирования не работает. Если кто-нибудь знает, что произошло, пожалуйста, оставьте сообщение брату Хонгу.
тестовая ссылка:https://bot.sannysoft.com/
Обычные результаты просмотра:
Затем брат Хун добавил код паузы.(page.pause()),Используйте URL-адрес для мониторинга этой страницы,См. раздел «Обход механизма обнаружения селена в Chrome».,Но проверка выбранного слова все равно появится. После долгой проверки я до сих пор не понимаю, что происходит.,Кто-нибудь знает, как оставить сообщение брату Хонгу?,Пусть брат Хун учится. Как показано ниже:
Ладно, уже поздно, так что на сегодня это все, чем можно поделиться и объяснить.