记录一个appium制作共存脚本,基于Mt管理器2.8.2beta

from appium import webdriver
from time import sleep,time

def echo(log):
    print(f"\r{log}",end="")

class appGC:  #apk共存类
    """
    driver.press_keycode('keycode') 等于 driver.keyevent('keycode')
    """
    true = True
    desired_caps = {
          "platformName": "Android",
          # "platformVersion": "8", # 字符串版本号如 8.0.0可简写8
          "platformVersion": "7", # 字符串版本号如 8.0.0可简写8
          "deviceName": "oppo1",
          "appPackage": "bin.mt.plus.canary",
          "appActivity": "bin.mt.plus.Main",
          "automationName": "uiautomator2",
          "unicodeKeyboard": true, #unicode编码方式发送字符串
          "resetKeyboard": true, #将键盘隐藏起来
          "noReset": true, #不重置应用
          "dontStopAppOnReset": true, #不关闭应用
          "undefined": true #自动获取权限
        }
    def __init__(self,url='http://127.0.0.1:4723/wd/hub'):
        self.driver = webdriver.Remote(url, self.desired_caps)
        self.driver.implicitly_wait(8) #初始化完毕,针对每个动作,智能等待8秒无响应才报错
    def __del__(self):
        self.driver.quit()
    def createApk(self,apkname='pi.apk',order=1):
        self.gcname = apkname[:-4]+'_clone.apk'
        t1 = time()
        echo("点击apk")
        self.driver.find_element_by_xpath(f".//*[@text='{apkname}']").click()
        echo("点击功能")
        self.driver.find_element_by_xpath(".//*[@text='功能']").click()
        echo("点击APK共存")
        self.driver.find_element_by_xpath(".//*[@text='APK共存']").click()
        echo(f"修改包名为原包名加{order}")
        prompt = self.driver.find_element_by_class_name("android.widget.EditText")
        text = prompt.text
        prompt.send_keys(f'{text[:-1]}t{order}')
        if self.driver.find_element_by_xpath(".//*[@text='自动签名']").get_attribute('checked') == 'false':
            echo("没有勾选自动签名")
            self.driver.find_element_by_xpath(".//*[@text='自动签名']").click()
        echo("确定")
        self.driver.find_element_by_xpath(".//*[@text='确定']").click()
        echo(f"点击生成的{self.gcname}")
        self.driver.find_element_by_xpath(f".//*[@text='{self.gcname}']").click()
        echo("点击查看按钮")
        self.driver.find_element_by_xpath(".//*[@text='查看']").click()
        echo("模拟向右按键")
        sleep(1)
        self.driver.press_keycode(22)  #KEYCODE_DPAD_RIGHT 导航键 向右 22
        for i in range(3):
            echo(f"\r向下翻页第{i+1}次")
            self.driver.press_keycode(93)  #KEYCODE_PAGE_DOWN 向下翻页键
        echo("点击resources")
        self.driver.find_element_by_xpath(".//*[@text='resources.arsc']").click()
        echo("点击Arsc编辑器")
        self.driver.find_element_by_xpath(".//*[@text='Arsc编辑器']").click()
        echo("点击字符常量池")
        self.driver.find_element_by_xpath(".//*[@text='字符常量池']").click()
        for i in range(3):
            echo(f"\r向下翻页第{i+1}次")
            self.driver.press_keycode(93)  #KEYCODE_PAGE_DOWN 向下翻页键
        echo("点击Pi")
        self.driver.find_element_by_xpath(".//*[@text='Pi']").click()
        self.driver.find_element_by_class_name("android.widget.EditText").send_keys(str(order))
        self.driver.find_element_by_xpath(".//*[@text='确定']").click()
        self.driver.find_element_by_xpath("//android.widget.ImageButton[@content-desc='转到上一层级']").click()
        self.driver.find_element_by_xpath("//android.widget.ImageButton[@content-desc='转到上一层级']").click()
        self.driver.find_element_by_xpath(".//*[@text='保存并退出']").click()
        self.driver.find_element_by_xpath(".//*[@text='确定']").click()
        sleep(3) #必要的延迟时间
        print('\n点击返回键')
        self.driver.press_keycode(4)  #KEYCODE_BACK 返回键 4
        echo("点击制作完毕的共存apk")
        self.driver.find_element_by_xpath(f".//*[@text='{self.gcname}']").click()
        echo("点击安装")
        self.driver.find_element_by_xpath(".//*[@text='安装']").click()
        echo("继续安装")
        sleep(0.5)
        self.driver.find_element_by_xpath(".//*[@text='安装']").click()
        echo("点击安装完成")
        self.driver.find_element_by_xpath(".//*[@text='完成']").click()
        sleep(0.5)
        self.driver.press_keycode(4) #KEYCODE_BACK 返回键 4
        t2 = time()
        print(f"\n本次耗时{round(t2-t1)}s")
if __name__ == '__main__':
    hpone = ['15969695980', '13511053464', '15265676880', '18353665870', '18850626125', '13326131633', '18942528865',
             '13408041016', '17608003750', '17180135274', '13335798258', '18660801561', '17561723998', '13818599842',
             '18688756590', '13014880924', '15811849245', '18810955721', '18955880168', '13682386253', '18709319669',
             '13726261214', '18767173002', '17673052836', '13812194367', '18782246541', '13923797929', '18115500066',
             '17380606888', '13774420073', '13450004441', '13889155610', '18408230698', '18766050961', '13551543621',
             '17726445226', '18859225221', '15861159802', '18234589798', '15558859651', '17606415885', '18507345933',
             '17765677039', '13951764498', '13868723316', '18518185145', '17717532700', '13128849615', '15829398827',
             '13538424853', '18500199259']
    r = appGC()
    for i in hpone[:2]:
        r.createApk(order=i[-4:])

发布了109 篇原创文章 · 获赞 23 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/qq_32394351/article/details/103460542