IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Python使用selenium模块模拟登录12306 -> 正文阅读

[开发测试]Python使用selenium模块模拟登录12306

selenium模块概述

  selenium模块是基于浏览器自动化的一个模块。换句话说使用selenium可以让浏览器根据自己写的代码自动运行。

  相应的语法

  ·编写基于浏览器自动化的操作代码

  ·?发起请求:get(url)

  ·?标签定位:find系列的方法

  ·?标签交互:send_ keys( 'xxx')

  ·?执行js程序:excute _script( 'jsCode ')一前进,后退:back() ,forward()

  ·?关闭浏览器:quit()

  这里就不赘述selenium模块的安装了。

  登录的具体流程

  总体思路:

  ·?使用selenium向12306网站发起请求,打开登陆页面

  ·?根据标签的id值定位到用户账号框、用户密码框以及登录按钮

  ·?填入账号密码后,点击登录按钮

  ·?进行滑块验证

  ·?登陆成功

  # 根据id获取用户账号输入框、密码输入框

  username_tag = driver.find_element_by_id('J-userName')

  password_tag = driver.find_element_by_id('J-password')

  # 填入自己的账号和密码

  username_tag.send_keys('xxxxxxx')

  time.sleep(1)

  password_tag.send_keys('xxxxxxxx')

  # 根据id获取登录按钮

  login_btn = driver.find_element_by_id('J-login')

  # 点击登录按钮

  login_btn.click()

  再点击登录按钮后,12306服务器会弹出滑块验证的窗口,需要我们使用代码模拟浏览器点击滑动完成验证。这里我们使用动作链来完成一系列操作:点击并长按,向指定方向拖拽一定的距离。

  动作链使用

  这里我们在介绍下动作链的使用,使用动作链非常简单。

  1、导入相应的模块from selenium.webdriver import ActionChains

  2、用构造方法获取动作链对象

  # 定义动作链,点击并拖拽 

 aco = ActionChains(driver)

  # 点击并长按

  aco.click_and_hold(span)

  # 位移指定的距离

  aco.move_by_offset(25,0).perform()

  注意:想让动作链执行相应的操作必须调用.perform()方法。

  完成验证码滑块的拖动

  # 定义动作链,点击并拖拽

  aco = ActionChains(driver)

  # 点击并长按

  aco.click_and_hold(span)

  #perform()立即执行动作链操作

  for i in range(5):

      aco.move_by_offset(25,0).perform()

      time.sleep(0.3)

  # 释放动作链

  aco.release()

  规避检测

  由于12306会识别使用selenium模块的浏览器操作,为了规避相应的检测,我们还必须添加相应的代码。
 

 from selenium.webdriver import ChromeOptions

  chrome_options = Options()

  chrome_options.add_argument("--disable-blink-features=AutomationControlled")

  driver = webdriver.Chrome(executable_path='你的chromedriver路径',chrome_options=chrome_options)

  完整代码 

 from selenium import webdriver

  import requests

  from lxml import etree

  from selenium.webdriver import Chrome

  from selenium.webdriver import ChromeOptions

  from selenium.webdriver import ActionChains

  import time

  # 实现无可视化界面

  from selenium.webdriver.chrome.options import  Options

  chrome_options = Options()

  chrome_options.add_argument("--disable-blink-features=AutomationControlled")

  # 这里填入你自己的chromedriver的安装路径

  driver = webdriver.Chrome(executable_path='C:/Users/Declan/AppData/Local/Google/Chrome/Application/chromedriver',chrome_options=chrome_options)

  driver.get('https://kyfw.12306.cn/otn/resources/login.html')

  # 根据id获取用户账号输入框、密码输入框

  username_tag = driver.find_element_by_id('J-userName')

  password_tag = driver.find_element_by_id('J-password')

  # 填入自己的账号和密码

  username_tag.send_keys('xxxxxxxx')

  time.sleep(1)

  password_tag.send_keys('xxxxxx')

  # 根据id获取登录按钮

  login_btn = driver.find_element_by_id('J-login')

  # 点击登录按钮

  login_btn.click()

  # 这里必须得休眠,不然运行速度太夸,代码难以定位到滑块

  time.sleep(2)

  span = driver.find_element_by_css_selector('.btn_slide')

  # 定义动作链,点击并拖拽

  aco = ActionChains(driver)

  # 点击并长按

  aco.click_and_hold(span)

  #perform()立即执行动作链操作

  for i in range(5):

      aco.move_by_offset(25,0).perform()

      time.sleep(0.3)

  # 释放动作链

  aco.release()

  time.sleep(2)

  ok_btn = driver.find_element_by_css_selector('.ok')

  ok_btn.click()

  time.sleep(5)

  driver.quit()

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:22:01  更:2022-03-21 21:22:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:37:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码