求助:这样的脚本已经无法运行下去,不知为何

框架:appium+python+unittest

安卓手机:真机,安卓8.0
appium版本:1.4

 

问题描述:成功连接手机,开启appium server后,执行testsuit.py主程序时,不执行用例程序,appium控制台有报错信息(函数未定义)。


pycharm控制台信息如下:

<_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> 
E  test_login_in (loginIn_testcase.Test_Login)
Time Elapsed: 0:10:00.024448

 

appium控制台有报错信息:

> info: Starting App
> info: [debug] Attempting to kill all 'uiautomator' processes
> info: [debug] Getting all processes with 'uiautomator'
> error: Unhandled error: TypeError: undefined is not a function
>     at [object Object].ADB.getPIDsByName (D:\Appium\loadspace\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:1037:8)
>     at [object Object].ADB.killProcessesByName (D:\Appium\loadspace\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:1079:8)
>     at [object Object].UiAutomator.start (D:\Appium\loadspace\Appium\node_modules\appium\lib\devices\android\uiautomator.js:29:12)
>     at [object Object].<anonymous> (D:\Appium\loadspace\Appium\node_modules\appium\lib\devices\android\android.js:115:37)
>     at D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:607:21
>     at D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:246:17
>     at iterate (D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:146:13)
>     at D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:157:25
>     at D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:248:21
>     at D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:612:34
>     at [object Object].androidCommon.initUnicode (D:\Appium\loadspace\Appium\node_modules\appium\lib\devices\android\android-common.js:878:5)
>     at D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:607:21
>     at D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:246:17
>     at iterate (D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:146:13)
>     at D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:157:25
>     at D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:248:21
>     at D:\Appium\loadspace\Appium\node_modules\appium\node_modules\async\lib\async.js:612:34
>     at [object Object].<anonymous> (D:\Appium\loadspace\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:180:9)
>     at ChildProcess.exithandler (child_process.js:742:7)
>     at ChildProcess.emit (events.js:110:17)
>     at maybeClose (child_process.js:1016:16)
>     at Process.ChildProcess._handle.onexit (child_process.js:1088:5) context: [POST /wd/hub/session {"capabilities":{"firstMatch":[{}],"alwaysMatch":{"platformName":"Android","appium:platformVersion":"5.0","appium:deviceName":"NPE4C17302001740","appium:appPackage":"com.njzx.care","appium:appActivity]
 

testreport中错误为:

Traceback (most recent call last):
  File "E:\pycharm\run\SHB_Test\loginIn_testcase.py", line 32, in setUp
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)  # 打开app  127.0.0.1是环回(loopback)地址
  File "D:\python\lib\site-packages\appium\webdriver\webdriver.py", line 97, in __init__
    super(WebDriver, self).__init__(command_executor, desired_capabilities, browser_profile, proxy, keep_alive)
  File "D:\python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "D:\python\lib\site-packages\appium\webdriver\webdriver.py", line 136, in start_session
    response = self.execute(RemoteCommand.NEW_SESSION, parameters)
  File "D:\python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 319, in execute
    response = self.command_executor.execute(driver_command, params)
  File "D:\python\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 376, in execute
    return self._request(command_info[0], url, body=data)
  File "D:\python\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 404, in _request
    resp = http.request(method, url, body=body, headers=headers)
  File "D:\python\lib\site-packages\urllib3\request.py", line 72, in request
    **urlopen_kw)
  File "D:\python\lib\site-packages\urllib3\request.py", line 150, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
  File "D:\python\lib\site-packages\urllib3\poolmanager.py", line 323, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "D:\python\lib\site-packages\urllib3\connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "D:\python\lib\site-packages\urllib3\util\retry.py", line 367, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "D:\python\lib\site-packages\urllib3\packages\six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "D:\python\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "D:\python\lib\site-packages\urllib3\connectionpool.py", line 384, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "D:\python\lib\site-packages\urllib3\connectionpool.py", line 380, in _make_request
    httplib_response = conn.getresponse()
  File "D:\python\lib\http\client.py", line 1331, in getresponse
    response.begin()
  File "D:\python\lib\http\client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "D:\python\lib\http\client.py", line 266, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))

 

脚本如下:
测试用例文件loginIn_testcase.py

# -*- coding:utf-8 -*-
import unittest
import  os
import time
from appium import webdriver    #   导入appium库
from selenium.common.exceptions import NoSuchElementException

#   测试用例1:
#   安卓应用名:守护宝
#   包名和activity名:com.njzx.care/com.njzx.care.activity.WelcomeActivity2
#   测试步骤:
#       (1)打开apk
#       (2)关爱界面点击“您好,请登录”,界面跳转至登录/注册界面
#       (3)直接输入号码:15152660926 密码:111111
#       (4)点击登录---成功
class Test_Login(unittest.TestCase):
    def setUp(self):
        # 准备环境
        # PATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p))  # 不写这一句也OK
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '5.0'
        desired_caps['deviceName'] = 'NPE4C17302001740:5037'
        # desired_caps['app'] = PATH('D:/workspace/testUI_new/app/test.apk')
        desired_caps['appPackage'] = 'com.njzx.care'
        desired_caps['appActivity'] = 'com.njzx.care.activity.WelcomeActivity2'
        # desired_caps["unicodeKeyboard", "True"]  # 支持中文输入
        # desired_caps["resetKeyboard", "True"]  # 支持中文输入,必须两条都配置
        desired_caps['newCommandTimeout'] = '100'  # 超时时间
        desired_caps['automationName'] = 'uiautomator2'
        #   desired_caps['app'] = 'apk包存放地址'
        driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)  # 打开app  127.0.0.1是环回(loopback)地址
        time.sleep(5)
        self.driver = driver
        print("环境准备完成!")
        self.verificationErrors = "----------------------------------------!"



    #   测试用例
    def test_login_in(self):    #  用例名必须以test_开头
        time.sleep(5)
        title = self.driver.find_element_by_text("您好,请登录")
        title.click()
        time.sleep(2)

        user = self.driver.find_element_by_text("请输入手机号码")
        if user.exists():
            user.click()
            time.sleep(2)
            user_tel = input("请输入手机账号")
            user.send_keys(user_tel)
        else:
            print('user元素未获取得到')
        pwd = self.driver.find_element_by_text("请输入登录密码")
        if pwd.exists():
            pwd.click()
            time.sleep(2)
            pwd_tel = input("请输入密码")
            pwd.send_keys(pwd_tel)
        else:
            print('pwd元素未获取得到')
        # 点击登录
        try:
            submit_login = self.driver.find_element_by_id("com.njzx.care:id/iv_login")
        except (NoSuchElementException,Exception) as d:
            print("登录失败!", format(d))
        else:
            submit_login.click()
            time.sleep(2)


    def tearDown(self):
        self.drvier.quit()
        print("环境还原完成!")


测试集(主程序)文件testsuit.py:

# encoding:utf-8
import unittest
from loginIn_testcase import Test_Login
from HTMLTestRunner import HTMLTestRunner

#  用例集合
if __name__ == '__main__':
    suite = unittest.TestSuite()  # unittest模块中的TestSuite()创建一个对象接收testcase
    suite.addTests(unittest.TestLoader().loadTestsFromNames(['loginIn_testcase.Test_Login']))# 传入测试用例(文件名 + 类名)
    with open('E:/pycharm/run/SHB_Test/result_report/HTMLReport.html', 'wb') as f:#  模式wb
        runner = HTMLTestRunner(stream=f,
                                title=' Test Report',
                                description='generated by HTMLTestRunner----Bling',
                                verbosity=2
                                )
        runner.run(suite)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值