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:])