最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+Appium自動化操作微信的教程分享

 更新時間:2023年01月10日 08:58:06   作者:Python小二  
Appium?是一個開源的自動化測試工具,支持?Android、iOS?平臺上的原生應(yīng)用,支持?Java、Python、PHP?等多種語言。本文主要介紹了Python+Appium自動化操作微信的教程,希望對大家有所幫助

簡介

Appium 是一個開源的自動化測試工具,支持 Android、iOS 平臺上的原生應(yīng)用,支持 Java、Python、PHP 等多種語言。

Appium 封裝了 Selenium,能夠?yàn)橛脩籼峁┧谐R姷?JSON 格式的 Selenium 命令以及額外的移動設(shè)備相關(guān)的控制命令,比如:多點(diǎn)觸控手勢、屏幕朝向等。

環(huán)境

本文主要環(huán)境如下:

  • Win7
  • JDK1.8
  • Appium
  • Python3.7
  • android-sdk
  • mumu 模擬器

JDK

下載地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

配置環(huán)境變量:

1.計算機(jī)(右鍵)->屬性->高級系統(tǒng)設(shè)置->高級->環(huán)境變量->新建環(huán)境變量 JAVA_HOME,如圖所示:

2.系統(tǒng)變量->找到 Path 變量->編輯->在變量值的末尾添加;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

3.新建 CLASSPATH 變量,變量值為:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

android-sdk

下載地址:https://www.androiddevtools.cn/

配置環(huán)境變量:

  • 與 JDK 配置類似,新建環(huán)境變量 ANDROID_HOME,變量值為 android-sdk 位置,比如:D:\android-sdk-windows
  • 在 Path 變量值的末尾添加 ;%ANDROID_HOME%\tools;%ANDROID_HOME%\build-tools\30.0.0-preview;%ANDROID_HOME%\platform-tools

Appium

下載地址:https://github.com/appium/appium-desktop/releases/tag/v1.18.3

安裝 Python 庫:pip install appium-python-client

Appium 安裝完成啟動后,點(diǎn)擊編輯配置,配置 JDK 和 android-sdk,如圖所示:

mumu

下載地址:http://www.51xiazai.cn/soft/584481.htm

mumu 模擬器下載完后,除了根據(jù)自己需要更改一下安裝路徑,其他選項(xiàng)默認(rèn)即可安裝,裝完后打開點(diǎn)擊應(yīng)用中心,搜一下微信,搜到之后安裝一下,微信安裝完成后再用自己的微信號登錄一下。

因?yàn)槲覀兪峭ㄟ^安卓的 adb 連接虛擬機(jī)的,因此需要在控制臺執(zhí)行 adb connect 127.0.0.1:7555 命令,讓 adb 連接上虛擬機(jī)。

執(zhí)行了上面連接模擬器的命令后,我們可以在 cmd 控制臺輸入 adb devices 查看當(dāng)前連接的虛擬機(jī)。

使用

首先啟動 Appium 和 mumu,因?yàn)橹拔覀円呀?jīng)配置了 Appium,此時我們直接點(diǎn)擊 Appium 的啟動服務(wù)器按鈕即可,如下圖所示:

啟動之后如圖所示:

現(xiàn)在我們可以先通過 Python 來啟動一下微信,代碼實(shí)現(xiàn)如下:

desired_caps = {
        "platformName": "Android",  # 操作系統(tǒng)
        "deviceName": "emulator-5554",  # 設(shè)備 ID
        "platformVersion": "6.0.1",  # 設(shè)備版本號
        "appPackage": "com.tencent.mm",  # app 包名
        "appActivity": "com.tencent.mm.ui.LauncherUI",  # app 啟動時主 Activity
        'noReset': True,  # 是否保留 session 信息,可以避免重新登錄
        'unicodeKeyboard': True,  # 使用 unicodeKeyboard 的編碼方式來發(fā)送字符串
        'resetKeyboard': True  # 將鍵盤給隱藏起來
    }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

執(zhí)行上述代碼之后,如果發(fā)現(xiàn) mumu 模擬器中的微信已經(jīng)啟動了,就說明基本環(huán)境已經(jīng)調(diào)通了;如果執(zhí)行代碼后發(fā)現(xiàn)調(diào)不到 mumu 模擬器中的微信,先在 cmd 中執(zhí)行一下 adb connect 127.0.0.1:7555 命令,再執(zhí)行程序即可。

添加好友

我們先來使用 Appium 實(shí)現(xiàn)添加好友的操作,基本過程為:打開微信->點(diǎn)擊⊕->選擇添加朋友->在搜索框輸入微信號->點(diǎn)擊搜索->點(diǎn)擊添加到通訊錄,功能的代碼實(shí)現(xiàn)如下:

desired_caps = {
        "platformName": "Android",  # 操作系統(tǒng)
        "deviceName": "emulator-5554",  # 設(shè)備 ID
        "platformVersion": "6.0.1",  # 設(shè)備版本號
        "appPackage": "com.tencent.mm",  # app 包名
        "appActivity": "com.tencent.mm.ui.LauncherUI",  # app 啟動時主 Activity
        'noReset': True,  # 是否保留 session 信息,可以避免重新登錄
        'unicodeKeyboard': True,  # 使用 unicodeKeyboard 的編碼方式來發(fā)送字符串
        'resetKeyboard': True  # 將鍵盤給隱藏起來
    }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(10)
print('點(diǎn)擊+號')
driver.find_element_by_id('com.tencent.mm:id/ef9').click()
time.sleep(5)
print('選擇添加朋友')
driver.find_elements_by_id('com.tencent.mm:id/gam')[1].click()
time.sleep(5)
print('點(diǎn)擊搜索框')
driver.find_element_by_id('com.tencent.mm:id/fcn').click()
time.sleep(5)
print('在搜索框輸入微信號')
driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('ityard')
time.sleep(3)
print('點(diǎn)擊搜索')
driver.find_element_by_id('com.tencent.mm:id/ga1').click()
time.sleep(3)
print('點(diǎn)擊添加到通訊錄')
driver.find_element_by_id('com.tencent.mm:id/g6f').click()

簡單說一下,在代碼中我們通過 driver.find_element_by_id('com.tencent.mm:id/xx') 來獲取微信上的元素,如果有重復(fù)的,則可以使用 driver.find_elements_by_id('com.tencent.mm:id/xx')[n] 來取,通過 send_keys('xx') 實(shí)現(xiàn)信息的輸入,通過 click() 實(shí)現(xiàn)點(diǎn)擊操作。

上面我們說了通過 find_element(s)_by_id('com.tencent.mm:id/xx') 來獲取元素,那么如何來確定 xx 呢?下面來一起看一下。

首先我們點(diǎn)擊 Appium 中的放大鏡位置,如下圖所示:

點(diǎn)擊之后會進(jìn)到如下界面:

我們在圖中所需功能下方將代碼中的 desired_caps 信息配置進(jìn)去,配置好后點(diǎn)擊啟動會話按鈕,啟動之后我們會發(fā)現(xiàn) Appium 中與 mumu 中的微信效果不一致,如下圖所示:

此時只需點(diǎn)擊一下上圖中紅框圈起來的刷新按鈕即可,現(xiàn)在我們就可以確定元素的值了(也就是上面說的 xx),比如:我們來確定微信中添加位置  的值,用鼠標(biāo)點(diǎn)擊  即可查看,如下圖所示:

我們接著點(diǎn)擊 ,操作步驟為:先到 mumu 模擬器中點(diǎn)擊微信中的 ,如下圖所示:

點(diǎn)擊之后再到 Appium 中點(diǎn)擊刷新按鈕,如下圖所示:

從圖中我們可以看列表中每個選項(xiàng)的值都是 com.tencent.mm:id/gam,此時代碼中我們就是用的 driver.find_elements_by_id('com.tencent.mm:id/gam')[1] 來取的,通過上面的介紹相信大家對 Appium 的使用已經(jīng)基本了解了。

發(fā)送消息

發(fā)送消息我們模擬的基本流程是:打開微信->點(diǎn)擊搜索的放大鏡->在搜索框輸入好友昵稱->點(diǎn)擊搜索到的好友->發(fā)送文字+表情,代碼實(shí)現(xiàn)如下:

desired_caps = {
        "platformName": "Android",  # 操作系統(tǒng)
        "deviceName": "emulator-5554",  # 設(shè)備 ID
        "platformVersion": "6.0.1",  # 設(shè)備版本號
        "appPackage": "com.tencent.mm",  # app 包名
        "appActivity": "com.tencent.mm.ui.LauncherUI",  # app 啟動時主 Activity
        'noReset': True,  # 是否保留 session 信息,可以避免重新登錄
        'unicodeKeyboard': True,  # 使用 unicodeKeyboard 的編碼方式來發(fā)送字符串
        'resetKeyboard': True  # 將鍵盤給隱藏起來
    }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(10)
print('點(diǎn)擊微信搜索框')
driver.find_element_by_id('com.tencent.mm:id/f8y').click()
time.sleep(10)
print('在搜索框輸入搜索信息')
driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('Python小二')
time.sleep(3)
print('點(diǎn)擊搜索到的好友')
driver.find_element_by_id('com.tencent.mm:id/tm').click()
time.sleep(3)
# 輸入文字
driver.find_element_by_id('com.tencent.mm:id/al_').send_keys('hello')
time.sleep(3)
# 輸入表情
driver.find_element_by_id('com.tencent.mm:id/anz').click()
time.sleep(3)
driver.find_element_by_id('com.tencent.mm:id/rv').click()
# 點(diǎn)擊發(fā)送按鈕發(fā)送信息
driver.find_element_by_id('com.tencent.mm:id/anv').click()
# 退出
driver.quit()

最后說一點(diǎn),因模擬器反應(yīng)可能會慢一些,如果程序執(zhí)行時出錯,可以將中間的等待時間 time.sleep(x) 設(shè)置大一些。

到此這篇關(guān)于Python+Appium自動化操作微信的教程分享的文章就介紹到這了,更多相關(guān)Python Appium自動化操作微信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Windows環(huán)境下如何使用Pycharm運(yùn)行sh文件

    Windows環(huán)境下如何使用Pycharm運(yùn)行sh文件

    這篇文章主要介紹了Windows環(huán)境下如何使用Pycharm運(yùn)行sh文件,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • 基于PyQt5制作Excel數(shù)據(jù)分組匯總器

    基于PyQt5制作Excel數(shù)據(jù)分組匯總器

    這篇文章主要介紹了基于PyQt5制作的一個小工具:Excel數(shù)據(jù)分組匯總器。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起試一試
    2022-01-01
  • Python 獲得命令行參數(shù)的方法(推薦)

    Python 獲得命令行參數(shù)的方法(推薦)

    本篇將介紹python中sys, getopt模塊處理命令行參數(shù)的方法,本文給大家介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友參考下吧
    2018-01-01
  • Python著名游戲?qū)崙?zhàn)之方塊連接 我的世界

    Python著名游戲?qū)崙?zhàn)之方塊連接 我的世界

    讀萬卷書不如行萬里路,學(xué)的扎不扎實(shí)要通過實(shí)戰(zhàn)才能看出來,本篇文章手把手帶你模仿著名游戲——我的世界,大家可以在過程中查缺補(bǔ)漏,看看自己掌握程度怎么樣
    2021-10-10
  • PyQt5 PySide2 觸摸測試功能的實(shí)現(xiàn)代碼

    PyQt5 PySide2 觸摸測試功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了PyQt5 PySide2 觸摸測試功能的實(shí)現(xiàn),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Python中的Xpath和lxml庫的使用詳解

    Python中的Xpath和lxml庫的使用詳解

    這篇文章主要介紹了Python中的Xpath和lxml庫的使用詳解,XPath即 XML路徑語言,它是一門在 XML 文檔中查找信息的語言,最初被用來搜尋 XML 文檔,同時它也適用于搜索 HTML 文檔,因此,在爬蟲過程中可以使用 XPath 來提取相應(yīng)的數(shù)據(jù),需要的朋友可以參考下
    2023-12-12
  • python屬于跨平臺語言碼

    python屬于跨平臺語言碼

    在本篇文章里小編給大家整理的是關(guān)于python是否跨平臺的相關(guān)知識點(diǎn)文章,有興趣的朋友們可以參考下。
    2020-06-06
  • Pycharm 如何連接遠(yuǎn)程服務(wù)器并debug調(diào)試

    Pycharm 如何連接遠(yuǎn)程服務(wù)器并debug調(diào)試

    本文主要介紹了Pycharm 如何連接遠(yuǎn)程服務(wù)器并debug調(diào)試,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 用pytorch的nn.Module構(gòu)造簡單全鏈接層實(shí)例

    用pytorch的nn.Module構(gòu)造簡單全鏈接層實(shí)例

    今天小編就為大家分享一篇用pytorch的nn.Module構(gòu)造簡單全鏈接層實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 用Python實(shí)現(xiàn)等級劃分

    用Python實(shí)現(xiàn)等級劃分

    大家好,本篇文章主要講的是用Python實(shí)現(xiàn)等級劃分,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02

最新評論

高青县| 中卫市| 衡山县| 阜新| 略阳县| 金寨县| 潮州市| 尼勒克县| 怀来县| 中方县| 商河县| 马龙县| 扎赉特旗| 灌云县| 霍州市| 松原市| 灵寿县| 尼玛县| 正定县| 巴塘县| 沂南县| 寻甸| 连南| 桑植县| 宝清县| 正镶白旗| 右玉县| 梓潼县| 全椒县| 双柏县| 大渡口区| 烟台市| 威信县| 本溪市| 吉首市| 卢龙县| 屏南县| 南丹县| 清涧县| 砀山县| 平潭县|