Appium 新手学 appium-python unittest 框架

· 2015年05月20日 · 最后由 Hi Hydra 回复于 2018年08月16日 · 2949 次阅读

原文地址:http://www.cnblogs.com/wyx123/articles/4481704.html

#废话不多说了,直接上代码~
import os
#相想使用unittest框架,首先要引入unittest 包,这个不多解释。
import unittest
from appium import webdriver
from time import sleep

# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)

#类继承unittest.TestCase 类,从TestCase类继承是告诉unittest模块的方式,这是一个测试案例。
class ContactsAndroidTests(unittest.TestCase):
    #setUp 用于设置初始化的部分,在测试用例执行前,这个方法中的函数将先被调用。
    def setUp(self):
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '4.3'
        desired_caps['deviceName'] = '192.168.56.101:5555'
        '''desired_caps['app'] = PATH(
            '../../../sample-code/apps/ContactManager/ContactManager.apk'
        )'''
        desired_caps['appPackage'] = 'com.android.calculator2'
        desired_caps['appActivity'] = '.Calculator'

        self.driver = webdriver.Remote('http://192.168.10.95:4723/wd/hub', desired_caps)

    #earDown 方法在每个测试方法执行后调用,这个地方做所有清理工作,如退出
    def tearDown(self):
        self.driver.close_app()
        self.driver.quit()

    #放置的就是我们的测试脚本了,这部分我们并不陌生;因为我们执行的脚本就在这里。
    def test_add_contacts(self):
        '''el = self.driver.find_element_by_name("Add Contact")
        el.click()

        textfields = self.driver.find_elements_by_class_name("android.widget.EditText")
        textfields[0].send_keys("Appium User")
        textfields[2].send_keys("someone@appium.io")

        self.assertEqual('Appium User', textfields[0].text)
        self.assertEqual('someone@appium.io', textfields[2].text)

        self.driver.find_element_by_name("Save").click()

        # for some reason "save" breaks things
        alert = self.driver.switch_to_alert()

        # no way to handle alerts in Android
        self.driver.find_element_by_android_uiautomator('new UiSelector().clickable(true)').click()

        self.driver.keyevent(3)'''
        self.driver.find_element_by_id('com.android.calculator2:id/digit9').click()


#unitest.main()函数用来测试 类中以test开头的测试用例
if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(ContactsAndroidTests)
    unittest.TextTestRunner(verbosity=2).run(suite)
import  unittest  

相想使用 unittest 框架,首先要引入 unittest 包,这个不多解释。

成功后的结果截图~,参照下图:

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 20 条回复 时间 点赞

顶 #18, 都不先介绍下框架吗?

Encountered internal error running command: Error: targetSdkVersionFromManifest failed. Original error: Cannot read property '1' of null 请问这个错误,该怎么解决?

新手学 appium-合集第一季度 中提及了此贴 11月25日 17:29
[该话题已被删除] 中提及了此贴 09月15日 15:08

这个 “框架” 是起什么作用的?小白不懂,还请讲解

#17 · 2016年01月25日 Author

#16 楼 @xialuo 百度吧

#15 楼 @mads 这个我写了,但 asserEquals 还是不能用

#15 · 2016年01月23日 Author

#14 楼 @xialuo import unittest

请教下我使用 assertEquals,提示未定义,unittest 也提示未被使用,是什么问题

#13 · 2016年01月21日 Author

#12 楼 @alisawu 我也遇到了。。。没解决。。

uiautomator 获取页面元素中文乱码,机型安卓 5.0.2,请问能解决吗

如果是单纯脚本,这个框架应该怎样搭建呀?

#10 · 2015年11月30日 Author

#9 楼 @fanny1990 Could not find a connected Android device."没连设备啊,加我 qq 把 79523822

public void setUp() throws Exception {
// set up appium
File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "../../../apps/ContactManager/");
File app = new File(appDir, "ContactManager.apk");
DesiredCapabilities capabilities = new DesiredCapabilities();
System.out.print("test1");
capabilities.setCapability("deviceName","AVD_19");
// capabilities.setCapability("PlatformName","Android");
capabilities.setCapability("platformVersion", "4.4");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage", "com.example.android.contactmanager");
capabilities.setCapability("appActivity", ".ContactManager");
driver = new AndroidDriver<>(new URL("http://192.168.0.22:4723/wd/hub"), capabilities);
}
代码如上:
怎么我的总是报错,请指教
info: [debug] Error: Could not find a connected Android device.

at [object Object].ADB.getDevicesWithRetry (C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:606:15)
at [object Object].androidCommon.prepareActiveDevice (C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android\android-common.js:400:12)
at [object Object]. (C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android\android-common.js:326:26)
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:607:21
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:246:17
at iterate (C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:146:13)
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:157:25
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:248:21
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:612:34
at [object Object].androidCommon.ensureDeviceLocale (C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android\android-common.js:371:45)
at [object Object].androidCommon.prepareEmulator (C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android\android-common.js:364:10)
at [object Object]. (C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android\android-common.js:325:26)
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:607:21
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:246:17
at iterate (C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:146:13)
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:157:25
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:248:21
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\async\lib\async.js:612:34
at [object Object]. (C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android\android-common.js:344:9)
at Object.oncomplete (fs.js:107:15)
info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: Could not find a connected Android device.)","origValue":"Could not find a connected Android device."},"sessionId":null}
info: <-- POST /wd/hub/session 500 27867.744 ms - 206

初学教程啊,你让我们这些啥都不懂的咋看?

#7 · 2015年08月10日 Author

#6 楼 @testnetstat 补充啥,都补充好了啊

求楼主补充啊 @mads

#5 · 2015年06月02日 Author

#3 楼 @lihuazhang 这周周末补充

顶 3 楼

#2 楼 @mads 新手学系列就得细致啊。。。 亲,勿忘初衷啊

#2 · 2015年06月01日 Author

#1 楼 @sincool 知识需要自己挖掘~

杂不细讲呢

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册