0

我启动 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)
4

1 回答 1

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

于 2017-03-20T04:49:50.587 回答