python3.7+selenium模拟淘宝登录功能的实现


Posted in Python onMay 26, 2020

在使用selenium去获取淘宝商品信息时会遇到登录界面

python3.7+selenium模拟淘宝登录功能的实现

这个登录界面处理的难度在于滑动验证的实现,有的人使用微博登录,避免了滑动验证,那可不可以使用密码登录呢?答案是可以的

实现思路

首先导入需要的库

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
import time

1. 定位登录元素,点击跳转

python3.7+selenium模拟淘宝登录功能的实现

代码如下:

password_login = self.wait.until(
 EC.presence_of_element_located((By.XPATH,"//div[@class='site-nav-sign']//a[@class='h']")))
 password_login.click()

这样就可以从首页跳转到登录页面

2. 获取用户和密码输入框,并输入信息

input_user = self.wait.until(
 EC.presence_of_element_located((By.XPATH,"//div[@class='input-plain-wrap input-wrap-loginid ']//input[@class='fm-text']")))
 input_user.send_keys('用户')

 input_password = self.browser.find_element_by_xpath("//div[@class='input-plain-wrap input-wrap-password']//input[@class='fm-text']")
 input_password.send_keys('密码')

3. 获取滑块元素

slider = self.wait.until(
 EC.element_to_be_clickable(
 (By.XPATH, '//div[@class="scale_text slidetounlock"]//span[@class="nc-lang-cnt"]')))

4. 滑块运动路径的实现

distance = 260
 track = []
 current = 0
 # mid = distance*3/13
 t = 1
 v= 260
 if current < distance:
 x = v*t
 current = current+x
 track.append(round(x))

这里的260是根据框的大小计算出来的

python3.7+selenium模拟淘宝登录功能的实现

从图中我们可以看出来,框的大小是300*40,所以滑动距离是260

5. 按照运动路径拖动滑块

ActionChains(self.browser).click_and_hold(slider).perform()
 for i in tracks:
 ActionChains(self.browser).move_by_offset(xoffset=i,yoffset=0).perform()
 time.sleep(1)
 ActionChains(self.browser).release().perform()

6. 最后一步:获取登录按钮,点击登录

button = self.wait.until(
 EC.element_to_be_clickable((By.XPATH,"//div[@class='fm-btn']//button[@type='submit']")))
 button.click()

代码整理

# encoding:utf-8
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
import time
class Taobao_login(object):
 def __init__(self):
 self.browser = webdriver.Chrome()
 self.browser.get('https://www.taobao.com')
 self.wait = WebDriverWait(self.browser,10)
 #登录操作
 def _put_info(self):
 #等待密码登录选项出现并跳转登录页面
 password_login = self.wait.until(
 EC.presence_of_element_located((By.XPATH,"//div[@class='site-nav-sign']//a[@class='h']")))
 password_login.click()
 #登录
 input_user = self.wait.until(
 EC.presence_of_element_located((By.XPATH,"//div[@class='input-plain-wrap input-wrap-loginid ']//input[@class='fm-text']")))
 input_user.send_keys('用户')
 input_password = self.browser.find_element_by_xpath("//div[@class='input-plain-wrap input-wrap-password']//input[@class='fm-text']")
 input_password.send_keys('密码')
 def _get_track(self):
 '''
 获取运动轨迹
 :return: 运动轨迹
 '''
 #滑动验证
 distance = 260
 track = []
 current = 0
 # mid = distance*3/13
 t = 1
 v= 260
 if current < distance:
 x = v*t
 current = current+x
 track.append(round(x))
 return track
 def _get_slider(self):
 '''
 获取滑块
 :return: 滑块对象
 '''
 slider = self.wait.until(
 EC.element_to_be_clickable(
 (By.XPATH, '//div[@class="scale_text slidetounlock"]//span[@class="nc-lang-cnt"]')))
 return slider
 def _move_to_gap(self,slider,tracks):
 '''
 按照tracks拖动滑块
 :param spider: 滑块
 :param tracks: 轨迹
 :return:
 '''
 ActionChains(self.browser).click_and_hold(slider).perform()
 for i in tracks:
 ActionChains(self.browser).move_by_offset(xoffset=i,yoffset=0).perform()
 time.sleep(1)
 ActionChains(self.browser).release().perform()
 def _login(self):
 #点击登录
 button = self.wait.until(
 EC.element_to_be_clickable((By.XPATH,"//div[@class='fm-btn']//button[@type='submit']")))
 button.click()
 time.sleep(1)
 def run(self):
 self._put_info()
 time.sleep(1)
 # tracks = self._get_track()
 # slider = self._get_slider()
 # self._move_to_gap(slider,tracks)
 # time.sleep(1)
 # self._login()
if __name__ == '__main__':
 login = Taobao_login()
 login.run()

总结

到此这篇关于python3.7+selenium模拟登录淘宝的文章就介绍到这了,更多相关Python selenium模拟淘宝登陆内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用BeautifulSoup分页网页中超链接的方法
Apr 04 Python
在Gnumeric下使用Python脚本操作表格的教程
Apr 14 Python
在Python中操作字符串之replace()方法的使用
May 19 Python
Python实现的视频播放器功能完整示例
Feb 01 Python
学生信息管理系统Python面向对象版
Jan 30 Python
使用Python实现跳帧截取视频帧
May 31 Python
用python打印1~20的整数实例讲解
Jul 01 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
Python识别验证码的实现示例
Sep 30 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 Python
TensorFlow固化模型的实现操作
May 26 #Python
Python 如何批量更新已安装的库
May 26 #Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 #Python
Python自定义聚合函数merge与transform区别详解
May 26 #Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
May 26 #Python
tensorflow实现从.ckpt文件中读取任意变量
May 26 #Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 #Python
You might like
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
PHP学习记录之数组函数
2018/06/01 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
PyQt5 多窗口连接实例
2019/06/19 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
python_mask_array的用法
2020/02/18 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
毕业生求职简历的自我评价
2013/10/23 职场文书
英文自我鉴定
2013/12/10 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
公司证明怎么写
2014/09/22 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书