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

前言

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

个人环境chrome

  • chrome 62
  • chromedriver 2.33

遇到问题

1.登陆手机版淘宝时候,验证码没法经过点击事件触发
[wap版淘宝](https://login.m.taobao.com/msg_login.htm?spm=0.0.0.0url

F12手机模式

1.按f12,点下图按钮(Toggle device toolbar)切换成手机模式3d

2.切换成手机模式后发现输入手机号后,手动操做是能够触发验证码的code

chrome设置手机模式

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

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

url = "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)

2.这里的deviceName点开设备选项,选择一个手机设备名称htm

TouchActions

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

2.TouchAction里面的几个用法事件

class TouchAction(object):
    def __init__(self, driver=None):
        self._driver = driver
        self._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 Options

url = "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()

seleniumQQ群:646645429utf-8

相关文章
相关标签/搜索