Appium UI导航问题 Python脚本
我刚开始学习用Python做安卓开发。我需要写一个Python脚本。简单来说,我想实现的是:当你点击第一个界面时,应该加载第二个界面。第二个界面上有一个按钮,当你按下这个按钮时,我需要加载第三个界面。
class SimpleAndroidTests(unittest.TestCase):
def setUp(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.2'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['app'] = PATH(
'mypath/aaa.apk'
)
desired_caps['appPackage'] = 'com.xxxx'
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def test_find_elementsFirstview(self):
time.sleep(13)
textfields = self.driver.find_elements_by_class_name("android.widget.EditText")
textfields[0].send_keys("first text")
textfields[1].send_keys("second text")
el = self.driver.find_element_by_name("press Login")
el.click()
def test_secondView(self):
time.sleep(10)
textfields = self.driver.find_elements_by_class_name("android.widget.EditText")
textfields[2].send_keys("secondviewinput2")
def tearDown(self):
# end the session
self.driver.quit()
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(SimpleAndroidTests)
unittest.TextTestRunner(verbosity=2).run(suite)
问题是,它没有进入第二个界面,而是又重新加载了第一个界面。请帮帮我...
2 个回答
0
当你在安卓应用上用 appium
的 Python 脚本点击一个元素时,appium
并不能控制接下来会发生什么。这是应用程序自己来处理这个点击事件。举个例子,如果有一个 登录
按钮,当你执行以下操作:
el = self.driver.find_element_by_name("press Login")
el.click()
这个点击事件是由应用程序来处理的,应用程序会接管后续的流程。比如,它可能会打开一个新的页面,里面有一个表单。
简单来说,appium
的 Python 客户端可以选择哪个界面元素,但这个元素具体会做什么,还是要看应用程序的设计。
2
在你的代码中,有一个方法叫做 setUp(self),nose 工具把它当作“测试准备”方法,这意味着它会在每个测试之前运行。因为你的 setUp() 方法会创建一个 webdriver,所以它在每个测试之前都会重新加载你的应用。你可以考虑把创建驱动的代码放到 setUpClass() 方法里,这样 nose 工具会在文件中的所有测试之前运行这个方法。
示例测试文件:
class YourTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
[...runs before all tests...]
def setUp(self):
[...runs before each test...]
def test_test1(self):
[...your tests...]
def tearDown(self):
[...runs after each test...]
@classmethod
def tearDownClass(cls):
[...runs after all tests...]