赞
踩
from appium import webdriver import time # adb shell dumpsys window windows | findstr mFocusedApp #查看应用名和应用界面名字 from appium.webdriver.common.touch_action import TouchAction from selenium.webdriver.support.wait import WebDriverWait desired_caps = dict() #平台的名字'Android',大小写无所谓,不能乱写 desired_caps['platformName'] = 'Android' #手机中 设置 -> 关于手机 -> 安卓的版本 desired_caps['platformVersion'] = '7' #设备的名字,对于安卓来说可以随便写,IOS要和设备一致 desired_caps['deviceName'] = '127.0.0.1:62001' #要打开的app名字 'com.miaodong.autoaction' desired_caps['appPackage'] = 'com.android.settings' #app的界面 '.HomeActivity' desired_caps['appActivity'] = '.Settings' #连接 访问appium服务 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) #appium会将我们的driver对象调用的方法转换成post请求,提交给appium服务器 #appium 通过接受到的post请求发送给手机再由手机执行 #获取包名和界面名 # print(driver.current_package) # print(driver.current_activity) # #延时两秒 # time.sleep(2) # # #在脚本内启动其他App # #打开"上面那个"应用程序,等待三秒后跳转到"设置"应用程序 # driver.start_activity('com.android.settings','.Settings') # #判断应用是否安装 # if driver.is_app_installed('com.miaodong.autoaction'): # #如果安装,就要卸载 # driver.remove_app('com.miaodong.autoaction') # #如果没有安装,就要安装 @par 安装包的本地路径 # else: # driver.install_app(r"E:\夜神模拟器\Nox\bin\1test.apk") # 通过id定位 放大镜按钮,点击 返回按钮这个元素 # search_btn = driver.find_element_by_id("com.android.settings:id/search") # search_btn.click() # #这个页面跳转是需要时间的,但是代码执行是很快的,所以要适当添加延时 # time.sleep(1) # # # 通过class定位 输入框,输入hello # driver.find_element_by_class_name("android.widget.EditText").send_keys("hello") # #driver.find_element_by_id("android:id/search_src_text").send_keys("hello") # # 定位返回按钮,"//*[@]" content-desc # driver.find_element_by_xpath("//*[@content-desc='收起']").click() # # time.sleep(3) #定位一组元素 #titles = driver.find_elements_by_id("android:id/title") # print(titles) # print(len(titles)) # for title in titles: # print(title.text) #元素等待:可能由于一些原因,我们想找的元素并没有立刻出来,此时如果直接定位可能会报错 #如:网速问题,服务器处理请求问题,电脑配置问题 #隐式等待 在几秒钟内,点击返回,在等待过程中,只要哪一秒被点击就会立刻执行 #这就是和time.sleep的区别 # driver.implicitly_wait(5) # driver.find_element_by_xpath("//*[@content-desc='收起']").click() #显式等待 隐式等待是全局的,显示等待只针对lambda下面的 #显式等待 显式dengd2为 #显示等待可以对单个元素进行设置,隐式等待只能全局 #使用sleep也可以,但是会造成不必要的浪费 # wait = WebDriverWait(driver,5,1) # 在5秒钟内,每一秒调用下面的方法 # back_btn = wait.until(lambda x: x.find_element_by_xpath("//*[@content-desc='收起']")) # back_btn.click() # titles2 = driver.find_elements_by_class_name("android.widget.TextView"); # print(titles2) # print(len(titles2)) # for title in titles2: # print(title.text) # 通过xpath,获取所有包含"设"的元素 # tmps = driver.find_elements_by_xpath("//*[contains(@text,'设')]") # for tmp in tmps: # print(tmp.text) # 模拟home键 将应用置于后台 一定时间再回到前台,模拟热启动 # 热启动:表示进入后台再回到前台,关机再开这种切断电源的行为可以叫做“冷启动” #driver.background_app(3) #输入中文 # driver.find_element_by_id("com.android.settings:id/search").click() # time.sleep(1) # driver.find_element_by_id("android:id/search_src_text").send_keys("阿维") #获取元素的位置和大小 # test = driver.find_element_by_id("com.android.settings:id/search") # print(test.location) # print(test.size) #获取元素的属性值 # test2 = driver.find_elements_by_id("android:id/title") # for i in test2: # #print(i.get_attribute("class")) # print(i.get_attribute("text")) #滑动(x1,y1,x2,y2,time) # driver.swipe(100,1000,100,100) #driver.swipe(100,1000,100,100,500) #scroll 滑动事件 从一个元素滑到另一个元素,直到页面自动停止 #不能设置滑动时间,惯性很大 # t1 = driver.find_element_by_xpath("//*[@text='WLAN']") # t2 = driver.find_element_by_xpath("//*[@text='声音']") #driver.scroll(t2,t1) #drag_and_drop 从一个元素滑到另一个元素,直到第二个元素代替第一个元素原本屏幕上的位置。 #不能设置滑动时间,没有惯性 #driver.drag_and_drop(t2,t1) #轻敲 # #找到要点击的元素 # ele = driver.find_element_by_xpath("//*[@text='显示']") # #ta = TouchAction(driver).tap(ele) # ta = TouchAction(driver).tap(x=300,y=700) #指定x,y # #ta = TouchAction(driver).tap(None,300,700) #最后一个参数是点击的次数 # ta.perform() #按下和抬起 # TouchAction(driver).press(None,300,700).perform() # TouchAction(driver).press(None,300,700).release().perform() #手指的等待(长按) # TouchAction(driver).tap(driver.find_element_by_xpath("//*[@text='WLAN']")).perform() # time.sleep(2) # TouchAction(driver).press(driver.find_element_by_xpath("//*[@text='WiredSSID']")).wait(2000).perform() #长按 # TouchAction(driver).tap(driver.find_element_by_xpath("//*[@text='WLAN']")).perform() # TouchAction(driver).long_press(driver.find_element_by_xpath("//*[@text='WiredSSID']"),duration=2000).perform() #移动 # TouchAction(driver).press(None,183,600).move_to(None,449,600)\ # .move_to(None,718,600).move_to(None,449,800)\ # .move_to(None,183,1000).move_to(None,449,1000)\ # .move_to(None,718,1000).release().perform() # (TouchAction(driver).press(None,183,600).move_to(None,449,600) # .move_to(None,718,600).move_to(None,449,800) # .move_to(None,183,1000).move_to(None,449,1000) # .move_to(None,718,1000).release().perform()) #获取当前设备的分辨率 #print(driver.get_window_size()) #截图 #driver.get_screenshot_as_file("test.png") #获取手机网络 #print(driver.network_connection()) #设置为飞行模式 #driver.set_network_connection(1) #发送键到设备 #点击三次音量加,再点击返回,再点击两次音量减 # for i in range(0,3): # driver.press_keycode(24) # driver.press_keycode(2) # driver.press_keycode(25) # driver.press_keycode(25) #操作通知栏 driver.open_notifications() #按下返回键 driver.press_keycode(4) time.sleep(5) # 关闭驱动对象,同时关闭所有关联的app driver.quit() # 关闭当前操作的app,不会关闭驱动对象 # driver.close_app() # print(driver.current_package)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。