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

相關文章
相關標籤/搜索