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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM