从appium python客户端启动模拟器

时间:2017-03-05 04:31:06

标签: android python appium python-appium

我启动appium服务器并手动从avd管理器启动模拟器。 这两个步骤我想使用appium python客户端自动化。 请您就此提出一些指示:

class ChessAndroidTests(unittest.TestCase):
    "Class to run tests against the Chess Free app"
    def setUp(self):
        "Setup for the test"
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '4.2'
        desired_caps['deviceName'] = 'Android Emulator'
        # Returns abs path relative to this file and not cwd
        desired_caps['app'] = os.path.abspath(os.path.join(os.path.dirname(__file__),'D:\Programs\myapp\Chess Free.apk'))
        desired_caps['appPackage'] = 'uk.co.aifactory.chessfree'
        desired_caps['appActivity'] = '.ChessFreeActivity'
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    def tearDown(self):
        "Tear down the test"
        self.driver.quit()

    def test_single_player_mode(self):
        "Test the Single Player mode launches correctly"
        element = self.driver.find_element_by_name("PLAY!")
        element.click()
        self.driver.find_element_by_name("Single Player").click()
        textfields = self.driver.find_elements_by_class_name("android.widget.TextView")
        self.assertEqual('MATCH SETTINGS', textfields[0].text)

#---START OF SCRIPT
if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(ChessAndroidTests)
    unittest.TextTestRunner(verbosity=2).run(suite)

1 个答案:

答案 0 :(得分:0)

我想做同样的事情。 我是这样做的:

    def runAll(self,*args):
     subprocess.Popen(['/Users/User/Library/Android/sdk/tools/emulator -netdelay none -netspeed full -avd Nexus_5X_API_22'],shell=True)
     subprocess.Popen(['appium --avd Nexus_5X_API_22'],shell=True)
     subprocess.Popen(['mocha /Users/User/Documents/dev/engineerappcopy/tests/testLoginPage.js --platform android'],shell=True)

请注意,启动模拟器和启动脚本之间会有延迟,单独执行这些操作可能是明智之举。如果需要,您还可以通过将它们添加到命令来定义Appium功能。

您可能还需要在命令中的“appium”后面定义appium路径。有时Popen需要完整路径,否则会抛出172错误。 我希望这会有所帮助。

https://docs.python.org/2/library/subprocess.html