2017-03-05 5 views
0

Ich starte Appium Server und starten Emulator von AVD-Manager manuell. Beide Schritte möchte ich mit dem Appium Python Client automatisieren.Starten Emulator von Appium Python Client

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) 

Antwort

0

ich genau das Gleiche tun wollte: bitten Sie daher einige Hinweise in Bezug auf das gleiche geben. Ich habe es wie folgt aus:

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) 

Beachten Sie, dass es eine Verzögerung zwischen dem Start der Emulator sein wird, und starten Sie das Skript, kann es sinnvoll sein, diese separat zu tun. Sie können Appium-Funktionen auch definieren, indem Sie sie zum Befehl hinzufügen.

Möglicherweise müssen Sie auch Ihren Appium-Pfad hinter "appium" im Befehl definieren. Manchmal Popen erfordert den vollständigen Pfad oder es wirft 172 Fehler. Ich hoffe das hat geholfen.

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

Verwandte Themen