appium 启动多个APP
1.desired_caps配置 autoLaunch为False ,表示初始化driver后不自动启动APP
'autoLaunch':False #是否让Appium自动安装和启动应用,默认为True
2.获取Activity
adb shell dumpsys SurfaceFlinger
3.初始化driver完成后,打开多个APP进行切换
appium 提供打开APP方法
driver.start_activity('cn.hyh.u3dproject', '.MainActivity')#打开APP1
time.sleep(2)
driver.find_element(MobileBy.ID,'cn.hyh.u3dproject:id/btnLogin').click()
driver.start_activity('com.jmar.xahl.ar.project', '.ui.activity.webview.WebViewActivity')#打开APP2
monkey,打开APP方法
os.system('adb shell monkey -p cn.hyh.u3dproject. -v 1')#monkey命令打开APP1
#-------------------------------------------------------------------------------
# @File : demo_02.py
# @Time : 2022-05-31 17:23
# @Author : mojin
# @Email : 397135766@qq.com
# @Software : PyCharm
#-------------------------------------------------------------------------------
# 导入webdriver
from appium import webdriver
import time,os
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
desired_caps ={'platformName': 'Android',
'newCommonTimeout': 500,#Appium等待接收从客户端发送的新命令的超时时长,超时后Appium认为客户端已经退出,终止会话。
'noReset': True, #不在此会话之前重置应用程序状态(意思就是每次启动都当做第一次启动,因为首次进入某些应用时有的会有弹框,所以测试时可以设置为True),默认为False
'autoGrantPermissions': True, #取消自动权限弹框的处理 true or false
'deviceName': '0123456789ABCDEF',
'platform_version': '10',
'appPackage': "com.jmar.xahl.ar.project",
'appActivity': "com.jmar.xahl.ar.project.ui.activity.splash.SplashActivity",
'udid': '0123456789ABCDEF',#连接的物理设备的唯一设备标识符,可通过adb devices查看,就是一串数字和字母组成的字符
'systemPort': 8200, #appium-uiautomator2-server默认是8200
'automationName': 'uiautomator2',#使用哪个自动化引擎,默认是Appium
"chromedriverExecutable": r"D:\Program Files (x86)\python374\chromedriver.exe",
'autoLaunch':False #是否让Appium自动安装和启动应用,默认为True
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 设置等待时间,如果不给时间的话可能会找不到元素
driver.implicitly_wait(10)
#driver.launch_app()
#driver.launch_app()
os.system('adb shell monkey -p cn.hyh.u3dproject. -v 1')#monkey命令打开APP1
#driver.start_activity('cn.hyh.u3dproject', '.MainActivity')#打开APP1
time.sleep(2)
driver.find_element(MobileBy.ID,'cn.hyh.u3dproject:id/btnLogin').click()
driver.start_activity('com.jmar.xahl.ar.project', '.ui.activity.webview.WebViewActivity')#打开APP2
#driver.start_activity('com.jmar.xahl.ar.project', '.ui.activity.im.contact.ContactActivity')
time.sleep(6)
# driver0=BasePage(driver)
# time.sleep(5)
# driver
#前面一系列操作,打开了H5页面
#等待web页面出现
#WebDriverWait(driver,10,1).until(EC.visibility_of_element_located(MobileBy.CLASS_NAME,"android.widget.FrameLayout"))
#获取当前的上下文
# time.sleep(5)
contexts=driver.contexts
print("当前所有的contexts:",contexts)
# wins = driver.window_handles
# print(wins)
#切换上下文,切换到webview
# #也可以通过名称来切换
# #driver.switch_to.context("WEBVIEW_com.baidu.yuedu")
# driver.switch_to.context(contexts[-1])
# #获取web内容
# source=driver.page_source
# # 切回native
# driver.switch_to.context(contexts[0])
# driver.switch_to.context("NATIVE_APP") # 这样也是可以的
# #
# #
# message_module = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("查看更多 ")') #
# driver.find_element(*message_module).click()
time.sleep(10)