栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

selenium滑块拖动验证(携程)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

selenium滑块拖动验证(携程)

selenium滑块拖动验证
  • 1.前言
  • 2.环境
  • 3.代码
  • 谢谢你的浏览(End)

1.前言

大学三年第一次の博客,最后几个月记录下成长轨迹⑧。
备战2021年10月底金砖数据分析与可视化技术应用赛项,记录这个月学习的部分爬虫知识。
共勉ε≡٩(๑>₃<)۶
参考bolg:https://www.jianshu.com/p/954eeb0face9
实验网站:携程 (https://passport.ctrip.com/user/login?)

2.环境

python 3.8.7
selenium 3.141.0

3.代码

导入本次要用到的两个库webdriver和ActionChains

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

导入驱动(本人使用的是谷歌浏览器所以导入的是谷歌驱动)

driver = webdriver.Chrome("chromedriver.exe")

设置等待时间

driver.implicitly_wait(20)

打开网页并使窗口最大化

driver.get("https://passport.ctrip.com/user/login?")
driver.maximize_window()

输入账号密码

account = "test"
password = "test"
driver.find_element_by_xpath('//*[@id="nloginname"]').send_keys(account)
driver.find_element_by_xpath('//*[@id="npwd"]').send_keys(password)

获取到滑块与滑块区域

btn= driver.find_element_by_xpath('//*[@id="sliderddnormal"]/div[1]/div[2]')
btn_area = driver.find_element_by_xpath('//*[@id="sliderddnormal"]')

执行拖动
这里使用到了ActionChains的drag_and_drop_by_offset方法
里面三个参数,分别是要拖动的元素、x与y轴的偏移量

ActionChains(driver).drag_and_drop_by_offset(btn,btn_area.size['width'],btn_area.size['height']).perform()

关于drag_and_drop_by_offset参数可以参考action_chains源代码

"""
        Holds down the left mouse button on the source element,
           then moves to the target offset and releases the mouse button.

        :Args:
         - source: The element to mouse down.
         - xoffset: X offset to move to.
         - yoffset: Y offset to move to.
        """

完整代码

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome("chromedriver.exe")
driver.implicitly_wait(20)
driver.get("https://passport.ctrip.com/user/login?")
driver.maximize_window()

account = "test"
password = "test"
driver.find_element_by_xpath('//*[@id="nloginname"]').send_keys(account)
driver.find_element_by_xpath('//*[@id="npwd"]').send_keys(password)

slider = driver.find_element_by_xpath('//*[@id="sliderddnormal"]/div[1]/div[2]')
slider_area = driver.find_element_by_xpath('//*[@id="sliderddnormal"]')

ActionChains(driver).drag_and_drop_by_offset(slider,slider_area.size['width'],slider.size['height']).perform()

因为携程更新了反扒,所以执行完成后的结果应该如下

接下来的图片点击的验证我会后续完善(挖坑)

谢谢你的浏览(End)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号