51Testing软件测试论坛

标题: Appium Remote webdriver调用 [打印本页]

作者: Mario洁    时间: 2018-4-20 13:28
标题: Appium Remote webdriver调用
remote webdriver的模板

默认开启4723端口接受webdriver请求

默认开启4724用于和android通讯

复制代码
  1. #coding:utf-8
  2. #Import the common package
  3. import os
  4. import unittest
  5. from appium import webdriver
  6. from time import sleep
复制代码

#设置路径信息
  1. PATH = lambda p: os.path.abspath(
  2.     os.path.join(os.path.dirname(__file__), p)
  3. )

  4. class LoginAndroidTests(unittest.TestCase):
  5.     def setUp(self):
  6.         #初始化测试平台
  7.         desired_caps = {}
  8.         desired_caps['platformName'] = 'Android'
  9.         desired_caps['platformVersion'] = '4.4.2'   #Android版本
  10.         desired_caps['deviceName'] = '127.0.0.1:62001'  #连接到的设备名称,这个是夜神模拟器的名称
  11.         #desired_caps['app'] = 'D:\apk\爱壁纸.apk'  #app的路径
  12.         desired_caps['appPackage'] = 'com.lovebizhi.wallpaper'  #包名
  13.         desired_caps['appActivity'] = 'com.lovebizhi.wallpaper.WelcomeActivity'  #activity名称
  14.         self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
  15.       
  16.     def tearDown(self):
  17.         self.driver.quit()
  18.         
  19.     def test(self):
  20.         #测试导航页
  21.         print("start test...")

  22.         #判断是否安装爱壁纸APP
  23.         wallpaper = self.driver.is_app_installed("com.lovebizhi.wallpaper")
  24.         if wallpaper:
  25.             #self.driver.remove_app("com.lovebizhi.wallpaper")
  26.             sleep(8)
  27.             # 点击某一壁纸图片
  28.             self.driver.find_elements_by_id("com.lovebizhi.wallpaper:id/image1")[4].click()
  29.             sleep(4)
  30.             # 点击设置壁纸
  31.             self.driver.find_element_by_id("com.lovebizhi.wallpaper:id/btSetup").click()
  32.             sleep(5)
  33.         else:
  34.             self.driver.install_app("D:\apk\爱壁纸.apk")
  35.             sleep(30)if __name__ == '__main__':
  36.     suite =unittest.TestLoader().loadTestsFromTestCase(LoginAndroidTests)
  37.     unittest.TextTestRunner(verbosity=2).run(suite)
复制代码

复制代码
如何查看app的appPackage和APPactivity?

1、下载apktool-new的压缩包,并解压
[attach]114104[/attach]


2、双击decode.bat运行

[attach]114105[/attach]

3、将apk拖入decode.bat中回车即可得到对应apk的文件夹
[attach]114106[/attach]
[attach]114107[/attach]




4、用记事本或notepad++等打开apk文件夹中的AndroidManifest.xml即可看到appPackage和APPactivity名称
[attach]114108[/attach]


在romote webdriver初始化的时候

desired_caps['appPackage'] = 'com.lovebizhi.wallpaper'
desired_caps['appActivity'] = 'com.lovebizhi.wallpaper.WelcomeActivity
已经确定了是要测试哪个APP和APP中的哪个界面。直接运行Python脚本时就会跳转到对应的界面,此时在test中就不能操作在本界面中不存在的元素。否则会报错

如:想要在主体部分写卸载该APP或其他APP,就会报错

复制代码
  1. #coding:utf-8
  2. #Import the common package
  3. import os
  4. import unittest
  5. from appium import webdriver
  6. from time import sleep

  7. #设置路径信息
  8. PATH = lambda p: os.path.abspath(
  9.     os.path.join(os.path.dirname(__file__), p)
  10. )

  11. class LoginAndroidTests(unittest.TestCase):
  12.     def setUp(self):
  13.         #初始化测试平台
  14.         desired_caps = {}
  15.         desired_caps['platformName'] = 'Android'
  16.         desired_caps['platformVersion'] = '4.4.2'
  17.         desired_caps['deviceName'] = '127.0.0.1:62001'
  18.         #desired_caps['app'] = 'D:\apk\爱壁纸.apk'
  19.         desired_caps['appPackage'] = 'com.lovebizhi.wallpaper'
  20.         desired_caps['appActivity'] = 'com.lovebizhi.wallpaper.WelcomeActivity'
  21.         self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

  22.         
  23.       
  24.     def tearDown(self):
  25.       
  26.         self.driver.quit()
  27.         
  28.     def test_1(self):
  29.         #测试导航页
  30.         print("start test1...")

  31.         #判断是否安装爱壁纸APP
  32.         wallpaper = self.driver.is_app_installed("com.lovebizhi.wallpaper")
  33.         if wallpaper:
  34.             self.driver.remove_app("com.lovebizhi.wallpaper")
  35.             sleep(8)
  36.         else:
  37.             self.driver.install_app("D:\apk\爱壁纸.apk")
  38.             sleep(30)
  39.                   

  40. if __name__ == '__main__':
  41.     suite =unittest.TestLoader().loadTestsFromTestCase(LoginAndroidTests)
  42.     unittest.TextTestRunner(verbosity=2).run(suite)
复制代码

复制代码
报如下错误:
[attach]114109[/attach]
[attach]114110[/attach]




所以在初始化之后就不要使用卸载或安装程序了






欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2