Appium最常用的方法总结

Appium常用到的方法

1.click 点击

element=driver.find_element_by_xpath('xxx')
  element.click()
  或者
  driver.find_element_by_xpath('xxx').click()

2.输入键值 press_keycode

  driver.press_keycode(4)  #点击返回键

  除了press_keycode方法,还有其他方法可以输入键值,如keyevent()和long_press_keycode()

  keycode:键值,http://developer.android.com/reference/android/view/KeyEvent.html

3.获取当前窗口大小get_window_size

     driver.get_window_size()[‘xx’] 

width=driver.get_window_size()['width']  #获取屏幕的宽
  height=driver.get_window_size()['height']  #获取屏幕的高

 

 4.滑动 swip

  driver.swip(start_x,start_y,end_x,end_y,duration=None)

  按住A点(start_x,start_y)快速滑动至B点(end_x,end_y),参数是坐标值 duration表示移动的时间间隔。

  PS:以左上角为原点。

  5.启动另一个activity   start_activity()

  这个可以是启动同应用的另一个activity,也可以启动另一个应用的activity

  dirver.strat_activity(‘包名’,’activity名’)

from appium import webdriver
  import time
  from selenium.common.exceptions import NoSuchElementException
  def android_driver():
      desired_cap={}
      desired_cap['platformName']="Android"
      desired_cap['platformVersion']='8.1.0'
      desired_cap['deviceName']='HONOR9X'
      desired_cap['udid']='5fb5c4cc'  #ip或者设备好
      desired_cap['appPackage']='com.ss.android.article.news'   #要启动的应用包名
      desired_cap['appActivity']='com.ss.android.article.news.searchIcon2'  #要启动的应用activity
      desired_cap['noReset']=True   #不需要重新登录
      driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_cap)
   
      return driver
   
  if __name__=="__main__":
      driver=android_driver()
      time.sleep(10)
      # 跨应用,进入爱奇艺首页
      driver.start_activity('com.qiyi.video', 'com.qiyi.video.WelcomeActivity')
      time.sleep(10)
      # 同应用进入搜索
      driver.start_activity('com.ss.android.article.news', 'com.ss.android.article.base.feature.search.SearchActivity')
      time.sleep(10)

6.截图 get_screenshot_as_file

  driver.get_screenshot_as_file(‘路径.png')

  driver.get_screenshot_as_file("1.png")  #保存到当前目录

  7.获取元素属性值

  element.text   #获取元素的text属性值

  element.content-desc  #获取元素content-desc属性值

from appium import webdriver
  import time
  from selenium.common.exceptions import NoSuchElementException
  def android_driver():
      desired_cap={}
      desired_cap['platformName']="Android"
      desired_cap['platformVersion']='8.1.0'
      desired_cap['deviceName']='HONOR9X'
      desired_cap['udid']='5fb5c4cc'  #ip或者设备好
      desired_cap['appPackage']='com.ss.android.article.news'   #要启动的应用包名
      desired_cap['appActivity']='com.ss.android.article.news.searchIcon2'  #要启动的应用activity
      desired_cap['noReset']=True   #不需要重新登录
      driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_cap)
   
      return driver
   
  if __name__=="__main__":
      driver=android_driver()
      time.sleep(10)
   
      try:
          element=driver.find_element_by_xpath('//*[@resource-id="com.ss.android.article.news:id/b8b"]')
      except NoSuchElementException:
          print("没有找到这个元素")
      else:
          print("已经找到这个元素了,提取他的text属性值")
          text_name=element.text
          print(text_name)  #输出首页

 

8.查找元素使用智能等待 WebDriverWait

  element=WebDriverWait(driver,wait_num).until(lambda x:x.find_element_by_xpath(xxx))

  在查找元素时,如果页面还没有加载出来就去查找就会报没有找到元素的异常(NoSuchElementException),这时我们可以加入time.sleep()进行等待,等待过后再去查找元素,这样的就会导致自动化时间过长,每一步都要加一个等待。那么有没有一种比较智能的查找元素的方法呢,他能够智能的等待,如果找到元素了就直接返回,如果没有找到元素才等到,WebDriverWait可以实现这种功能。

  wait_num参数就是等待的最长时长,如果超过这个时长还没有找到元素,就会抛出一个超时的异常,如果找到了元素就直接返回,就不等待了,这样既能找到元素,又能节省时间。

  PS:在使用WebDriverWait之前,需要先导入

  from selenium.webdriver.support.ui import WebDriverWait

  from selenium.common.exceptions import TimeoutException

 from appium import webdriver
  import time
  from selenium.common.exceptions import NoSuchElementException
  from selenium.webdriver.support.ui import WebDriverWait
  from selenium.common.exceptions import TimeoutException
  def android_driver():
      desired_cap={}
      desired_cap['platformName']="Android"
      desired_cap['platformVersion']='8.1.0'
      desired_cap['deviceName']='HONOR9X'
      desired_cap['udid']='5fb5c4cc'  #ip或者设备好
      desired_cap['appPackage']='com.ss.android.article.news'   #要启动的应用包名
      desired_cap['appActivity']='com.ss.android.article.news.searchIcon2'  #要启动的应用activity
      desired_cap['noReset']=True   #不需要重新登录
      driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_cap)
      
      return driver
   
  if __name__=="__main__":
      driver=android_driver()
      try:
          #element=driver.find_element_by_xpath('//*[@resource-id="com.ss.android.article.news:id/b8b"]')
          element=WebDriverWait(driver,10).until(lambda x:x.find_element_by_xpath('//*[@resource-id="com.ss.android.article.news:id/b8b"]'))
      except TimeoutException:
          print("超时了,没有找到这个元素")
      else:
          print("已经找到这个元素了,提取他的text属性值")
          text_name=element.text
          print(text_name)  #输出首页

通过对比可以明显的发现时间缩短了,找到元素直接就返回。

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值