51Testing软件测试论坛

标题: caps里加如caps['automationName'] = 'UiAutomator2'之后,send_keys就报错 [打印本页]

作者: gyz644    时间: 2019-11-5 10:37
标题: caps里加如caps['automationName'] = 'UiAutomator2'之后,send_keys就报错
老师,在caps里如果不注释掉caps['automationName'] = 'UiAutomator2, send_keys方法就报错,java.lang.Thread.run(Thread.java:818)
不是只在unittest里,顺序执行时也有这个问题,看您的视频里并没有报错呀

# 使用unitest框架实现新增笔记的脚本
import unittest
from appium.webdriver.webdriver import WebDriver
from selenium.webdriver.support.wait import WebDriverWait
import time


class TestAddNote(unittest.TestCase):
    def setUp(self):
        self.desired_caps = dict()
        self.desired_caps['automationName'] = 'UiAutomator2'
        self.desired_caps['platformName'] = 'Android'
        self.desired_caps['platformVersion'] = '6.0.1'
        self.desired_caps['deviceName'] = 'CB5A294W2D'
        self.desired_caps['unicodeKeyboard'] = True
        self.desired_caps['appPackage'] = 'com.youdao.note'
        self.desired_caps['appActivity'] = '.activity2.MainActivity t186'
        self.driver = WebDriver('http://127.0.0.1:4723/wd/hub', self.desired_caps)
        self.driver.implicitly_wait(10)

    # 测试新增笔记
    def test_case1(self):
        if WebDriverWait(self.driver, 10).until(
                lambda x: x.find_element_by_id('com.android.packageinstaller:id/permission_allow_button')):
            self.driver.find_element_by_id('com.android.packageinstaller:id/permission_allow_button').click()
        if WebDriverWait(self.driver,  10).until(lambda x: x.find_element_by_class_name('android.widget.ImageView')):
            x1 = self.driver.get_window_size()['width'] * 0.85
            x2 = self.driver.get_window_size()['width'] * 0.15
            y1 = self.driver.get_window_size()['height'] * 0.5
            self.driver.swipe(x1, y1, x2, y1)
            self.driver.find_element_by_id('com.youdao.note:id/enter_app').click()
        self.driver.find_element_by_id('com.youdao.note:id/add_note').click()
        self.driver.find_element_by_id('com.youdao.note:id/add_note_floater_add_note').click()
        self.driver.find_element_by_class_name('android.widget.FrameLayout').send_keys('content')
        self.driver.find_element_by_id('com.youdao.note:id/note_title').send_keys('title')
        self.driver.find_element_by_id('com.youdao.note:id/actionbar_complete_text').click()
        time.sleep(3)
        # 获取新增后的标题内容
        rtitle = self.driver.find_element_by_id('com.youdao.note:id/title').text
        self.assertEqual(rtitle, 'title', '新增笔记测试失败')

    def tearDown(self):
        self.driver.quit()


if __name__ == '__main__':
    unittest.main()
作者: 学掌门网校    时间: 2019-11-5 11:55
如果有Uiautomator2这句报错注释掉就可以了。
上次记得发过关于uiautomator2版本兼容性问题的资料。这是一个兼容性问题导致的。对于自动化测试而言,常用的就是send_keys和click。如果是滑动处理,就是用坐标定位。主要看我们想做什么操作。
这方面的资料找了一段时间,都没有特别详细的,都只是说和android版本有关,都不具体,如果后续能找到更详细的,我单独再发给您呵!彤彤学习非常认真,这种精神值得表扬!棒棒哒!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2