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


    前言

    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手机模式

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

    2.切换成手机模式后发现输入手机号后,手动操作是可以触发验证码的

    chrome设置手机模式

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

    # 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点开设备选项,选择一个手机设备名称

    TouchActions

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

    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群:646645429

  • 相关阅读:
    Springmvc:(八)拦截器
    单例模式最终推荐写法-线程安全
    mybatis源码解析-日志适配器
    java基本类型与byte字节数组的转换(包含大端,小端)
    spring boot mybatis 报错Invalid bound statement (not found)解决过程
    mysql中联合索引中的自增列的增长策略
    软件设计六大原则个人理解记录
    spring boot mybatis+ vue 使用POI实现从Excel中批量导入数据
    spring boot 使用POI导出数据到Excel表格
    spring boot 整合JPA多数据源
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/7942275.html
Copyright © 2020-2023  润新知