前言
我们在日常工作和生活中,经常会遇到滑块的情况,如下图所示:
淘宝的网页登录,在我们输入完账号密码后,需要按住滑块,并且滑动至最右边,才可以登录。这是最为常见的滑块安全验证机制,当然也对我们的自动化工作造成了部分的困扰,在selenium中,我们可以通过滑动滑块来解决这个问题,而playwright同样可以帮助我们实现这个操作。
操作滑块
playwright提供了下面的鼠标方法来操作滑块,具体方法如下:
- mouse.move() 起点或终点坐标位置
- mouse.down() 按住鼠标
- mouse.up() 释放鼠标
示例如下:
我们还是以淘宝登录页面为例进行操作,代码如下:
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://login.taobao.com/")
page.get_by_placeholder("账号名/邮箱/手机号").click()
page.get_by_placeholder("账号名/邮箱/手机号").fill("xxxxx")
page.get_by_placeholder("请输入登录密码").click()
page.get_by_placeholder("请输入登录密码").fill("xxxxxxxxxxxxxx")
slider = page.locator('#baxia-dialog-content').bounding_box()
page.mouse.move(x=slider['x'], y=slider['y']+slider['height']/2)
page.mouse.down()
page.mouse.move(x=slider['x']+240, y=slider['y']+slider['height']/2)
page.mouse.up()
page.pause()
page.get_by_role("button", name="登录").click()
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
总结
本文主要介绍了使用playwright实现绕过滑块的登录验证的方法,在滑块登录验证的方面,playwright比selenium更为简洁快速,不需要导入其他的方法,比较推荐使用playwright的方法来实现该功能。