selenium+python自动化84-chrome手机wap模式(登录淘宝页面)

news/2024/11/30 20:29:08/

selenium+python自动化84-chrome手机wap模式(登录淘宝页面)

    • 前言
    • 遇到的问题
    • Chrome手机模式
    • TouchAction
    • 参考代码
    • 附:

转载自: https://www.cnblogs.com/yoyoketang/p/7942275.html

前言

chrome手机wap模式登录淘宝页面,点击验证码无效问题解决。
切换到wap模式,使用TouchActions模块用tap方法触摸

我的环境

  • chrome 62
  • chromedriver 2.33

遇到的问题

1.登录手机版淘宝时候,验证码无法通过点击事件触发
[wap版淘宝](https://login.m.taobao.com/msg_login.htm?spm=0.0.0.0)
在这里插入图片描述

但是在F12 切换成手机模式后发现输入手机号后,手动操作是可以触发验证码的
在这里插入图片描述

Chrome手机模式

1.添加Options配置,设置成手机模式访问

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsurl = "https://login.m.taobao.com/msg_login.htm?spm=0.0.0.0"mobile_emulation ={ #"deviceName": "Apple iPhone 3GS"#"deviceName": "Apple iPhone 4"#"deviceName": "Apple iPhone 5"#"deviceName": "Apple iPhone 6"#"deviceName": "Apple iPhone 6 Plus"#"deviceName": "BlackBerry Z10"#"deviceName": "BlackBerry Z30"#"deviceName": "Google Nexus 4"#"deviceName": "Google Nexus 5"#"deviceName": "Google Nexus S"#"deviceName": "HTC Evo, Touch HD, Desire HD, Desire"#"deviceName": "HTC One X, EVO LTE"#"deviceName": "HTC Sensation, Evo 3D"#"deviceName": "LG Optimus 2X, Optimus 3D, Optimus Black"#"deviceName": "LG Optimus G"#"deviceName": "LG Optimus LTE, Optimus 4X HD" #"deviceName": "LG Optimus One"#"deviceName": "Motorola Defy, Droid, Droid X, Milestone"#"deviceName": "Motorola Droid 3, Droid 4, Droid Razr, Atrix 4G, Atrix 2"#"deviceName": "Motorola Droid Razr HD"#"deviceName": "Nokia C5, C6, C7, N97, N8, X7"#"deviceName": "Nokia Lumia 7X0, Lumia 8XX, Lumia 900, N800, N810, N900"#"deviceName": "Samsung Galaxy Note 3"#"deviceName": "Samsung Galaxy Note II"#"deviceName": "Samsung Galaxy Note"#"deviceName": "Samsung Galaxy S III, Galaxy Nexus"#"deviceName": "Samsung Galaxy S, S II, W"#"deviceName": "Samsung Galaxy S4"#"deviceName": "Sony Xperia S, Ion"#"deviceName": "Sony Xperia Sola, U"#"deviceName": "Sony Xperia Z, Z1"#"deviceName": "Amazon Kindle Fire HDX 7″"#"deviceName": "Amazon Kindle Fire HDX 8.9″"#"deviceName": "Amazon Kindle Fire (First Generation)"#"deviceName": "Apple iPad 1 / 2 / iPad Mini"#"deviceName": "Apple iPad 3 / 4"#"deviceName": "BlackBerry PlayBook"#"deviceName": "Google Nexus 10"#"deviceName": "Google Nexus 7 2"#"deviceName": "Google Nexus 7"#"deviceName": "Motorola Xoom, Xyboard"#"deviceName": "Samsung Galaxy Tab 7.7, 8.9, 10.1"#"deviceName": "Samsung Galaxy Tab"#"deviceName": "Notebook with touch""deviceName": "iPhone 6"# Or specify a specific build using the following two arguments#"deviceMetrics": { "width": 360, "height": 640, "pixelRatio": 3.0 },#"userAgent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19" }
options = Options()
options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome(chrome_options=options)driver.get(url)

2.这里的deviceName点开设备选项,选择一个手机设备名称
在这里插入图片描述

TouchAction

1.这里输入手机号后,用click点‘获取验证码’是无效的,这时候需要换个思维,用TouchActions里面的tap触摸方式去触发‘获取验证码’按钮

2.TouchAction里面的几个用法

class TouchAction(object):def __init__(self, driver=None):self._driver = driverself._actions = []def tap(self, element=None, x=None, y=None, count=1):模拟手指触摸屏def press(self, el=None, x=None, y=None):短按:模拟手指按住一个元素,或者坐标def long_press(self, el=None, x=None, y=None, duration=1000):长按:模拟按住一个元素,或者坐标def wait(self, ms=0):按住元素后的等待时间def move_to(self, el=None, x=None, y=None):移动手指到另外一个元素,或者坐标,注意这里坐标不是绝对坐标,是偏移量def release(self):释放手指def perform(self):执行前面的动作

参考代码

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.touch_actions import TouchActions
from selenium.webdriver.chrome.options import Optionsurl = "https://login.m.taobao.com/msg_login.htm?spm=0.0.0.0"# 设置成手机模式
mobile_emulation = {"deviceName":"iPhone 6"}
options = Options()
options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome(chrome_options=options)driver.get(url)driver.find_element_by_id("username").send_keys("yoyoketang")# 触摸事件
el = driver.find_element_by_id('getCheckcode')
TouchActions(driver).tap(el).perform()

TouchAction提供的其他方法:

double_tap(on_element)                                                #双击   
flick_element(on_element, xoffset, yoffset, speed)         #从元素开始以指定的速度移动
long_press(on_element)                                            #长按不释放
move(xcoord, ycoord)                                                #移动到指定的位置
perform()                                                                    #执行链中的所有动作
release(xcoord, ycoord)                                             #在某个位置松开操作
scroll(xoffset, yoffset)                                                      #滚动到某个位置
scroll_from_element(on_element, xoffset, yoffset)         #从某元素开始滚动到某个位置
tap(on_element)                                                             #单击
tap_and_hold(xcoord, ycoord)                                        #某点按住

附:

selenium touchAction官方文档:
https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html


http://www.ppmy.cn/news/579163.html

相关文章

帝国cms制作手机wap站完美教程

其实帝国CMS系统本身是有WAP功能的,但自带的WAP功能比较单一,许多不足,且无法使用标签调用。基本上就是个无用的功能。 但其实还是有办法可以制作WAP手机站,数据同步电脑站。 教程开始: 1、操作前,我们需要…

在线手机WAP模拟器或软件,用电脑IE浏览器在线浏览手机wap网站

先介绍一下什么是WAP浏览器。WAP浏览器,WAP Browser,又叫WAP微型浏览器,是用在手机或pda等设备上浏览WAP站点的工具。它与PC上的web浏览器比如ie、firefox相似。但由 于手机wap站点用的是WML之类的语言,所以web浏览器并不能直接浏…

dedecms 织梦配置 手机 wap 站点,并绑定二级域名

主站 手机站 wap.abc.com 1.安装手机wap浏览 模块 2.根目录创建 wap文件夹 ,将 templets\wap 文件移入 根目录下的 wap, 如图: 3.将根目录下的 wap.php 移入 wap文件夹,如图: 4.修改wap.php a. 第一行require_once (dirname(__…

手机wap前端开发经验

对于我们前端来讲,wap2.0开发无疑是对我们的一个考验,这个考验主要是考验我们对于重构方面的功底。下面主要分 UI、HTML、CSS、Javascript三方面给大家分享在wap2.0开发中的一些个人经验。 兼容性方面 在介绍之前首先我得吐槽下wap2.0网页开发在兼容性…

手机wap端开发微信绑定第三方登陆功能

1.申请一个“微信公众平台服务号”; 2.开发者模式 - 配置服务器(微信公众平台里面的配置) 我们需要配置三个值:服务器地址(接收消息的地址)、自定义token、消息加密方式(可选择明文或者密文),暂…

PHP实现支付宝手机WAP支付接入说明

因为项目原因,最近刚在项目中接入了支付宝的支付,故将支付过程记录下来以备查看。 项目背景:该项目为手机WAP项目,所以接入的是支付宝的手机网站支付类型。 首先,在支付宝官方下载SDK和DEMO: https://do…

手机wap页面开发小记

最近偶然开发手机wap页面&#xff0c;记点新鲜的东西&#xff0c;嘿嘿。 1. 页面要标记为手机wap页面&#xff0c;可增加百度等工具对wap页面的识别度。 例如&#xff1a;<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapfo…

php(wap)获取手机号码,WAP获取访客手机号码

抓取网站访客手机号 我们先了解一下常规移动网络的连接方式 WIFI&#xff0c;手机wifi上网其实电信、联通、移动的移动运营平台没啥事&#xff0c;因为他走的路由器其实是走的传统的有线上网。所以wifi上网默认走的有线&#xff0c;不扣流量&#xff0c;也无法获得号码了 常规三…