我启动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)
答案 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错误。
我希望这会有所帮助。