appium+python测试手机自带计算器apk

所用设备:
手机:oppo R7sm
软件:手机自带计算器
appium —服务器,客户端
ui automator view —获取APP控件
脚本语言:python

报错1:
C:\Users\AppData\Local\Programs\Python\Python36\python.exe F:/wechat/src/test_case/test_calautor.py
C:\Users\jinyifeng\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py:374: ResourceWarning: unclosed <socket.socket fd=556, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1’, 63828), raddr=(‘127.0.0.1’, 4723)>
return self._request(command_info[0], url, body=data)
C:\Users\jinyifeng\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py:374: ResourceWarning: unclosed <socket.socket fd=536, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1’, 63886), raddr=(‘127.0.0.1’, 4723)>
return self._request(command_info[0], url, body=data)
EC:\Users\jinyifeng\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py:374: ResourceWarning: unclosed <socket.socket fd=120, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1’, 63887), raddr=(‘127.0.0.1’, 4723)>
return self._request(command_info[0], url, body=data)
EC:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py:374: ResourceWarning: unclosed <socket.socket fd=804, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1’, 63888), raddr=(‘127.0.0.1’, 4723)>
return self._request(command_info[0], url, body=data)
EC:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py:374: ResourceWarning: unclosed <socket.socket fd=556, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1’, 63889), raddr=(‘127.0.0.1’, 4723)>
return self._request(command_info[0], url, body=data)
EC:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py:374: ResourceWarning: unclosed <socket.socket fd=820, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1’, 63890), raddr=(‘127.0.0.1’, 4723)>
return self._request(command_info[0], url, body=data)
EC:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py:374: ResourceWarning: unclosed <socket.socket fd=648, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1’, 63891), raddr=(‘127.0.0.1’, 4723)>
return self._request(command_info[0], url, body=data)
C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py:374: ResourceWarning: unclosed <socket.socket fd=108, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1’, 63892), raddr=(‘127.0.0.1’, 4723)>
return self._request(command_info[0], url, body=data)
C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py:374: ResourceWarning: unclosed <socket.socket fd=644, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1’, 63893), raddr=(‘127.0.0.1’, 4723)>
return self._request(command_info[0], url, body=data)
EC:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\remote_connection.py:374: ResourceWarning: unclosed <socket.socket fd=820, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1’, 63894), raddr=(‘127.0.0.1’, 4723)>
return self._request(command_info[0], url, body=data)

这个错可以在脚本中设置忽略:

import warnings
warnings.simplefilter("ignore", ResourceWarning)

在这里插入图片描述
报错2:
File “F:/wechat/src/test_case/test_calautor.py”, line 46, in test_1_Div
result1 = self.dr.find_element_by_id(‘result’).text
File “C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 360, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File “C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\appium\webdriver\webdriver.py”, line 213, in find_element
‘value’: value})[‘value’]
File “C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 321, in execute
self.error_handler.check_response(response)
File “C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\appium\webdriver\errorhandler.py”, line 29, in check_response
raise wde
File “C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\appium\webdriver\errorhandler.py”, line 24, in check_response
super(MobileErrorHandler, self).check_response(response)
File “C:\Users\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py”, line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: An element could not be located on the page using the given search parameters.

分析:
是result元素没找到,通过ui automator view查看result的id是否与脚本中的一样

result1 = self.dr.find_element_by_id('com.android.calculator2:id/edittext').text

在这里插入图片描述修改脚本后执行就不报错了

报错2:
在这里插入图片描述

判断用例成功或失败的断言assert报错,
assert知识点学习
https://blog.csdn.net/qq_39247153/article/details/81082313
由于result1的值为963÷321\n=3而不是3,所以报错,所以修改脚本如下

self.assertEqual(result1, '963÷321\n=3')

重新执行即可

脚本:

from appium import  webdriver
from time import sleep
import unittest
from appium.webdriver.common.touch_action import TouchAction
import warnings


class TestItest(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        warnings.simplefilter("ignore", ResourceWarning)
        self.desired_caps = {'platformName': 'Android',
                        # 设备名
                        'deviceName': 'c534a77c',
                        # 设备的平台版本,是安卓5.1
                        'platformVersion': '5.1.1',
                        # app 包名
                        'appPackage': 'com.android.calculator2',
                        # app包名+app activity
                        'appActivity': '.Calculator',
                        # 使用unicode输入法
                        'unicodeKeyboard': "True",
                        # 重置输入法到初始状态
                        'resetKeyboard': "True",
                        # 启动app时不要清除app里的原有的数据
                        'noReset': "True"
                        }
        self.dr=webdriver.Remote('http://127.0.0.1:4723/wd/hub',self.desired_caps)
        sleep(5)
    @classmethod
    def tearDownClass(self):
        sleep(2)
        self.dr.close_app()

    def test_1_Div(self):
    

# 除法运算963/321=3
    # 计算器归0
    self.dr.find_element_by_id('com.android.calculator2:id/cancel').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit9').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit6').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit3').click()
    self.dr.find_element_by_id('com.android.calculator2:id/div').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit3').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit2').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit1').click()
    self.dr.find_element_by_id('com.android.calculator2:id/equal').click()
    result1 = self.dr.find_element_by_id('com.android.calculator2:id/edittext').text
    self.assertEqual(result1, '963÷321\n=3')
    self.dr.find_element_by_id('com.android.calculator2:id/cancel').click()
    sleep(2)

def test_2_Div(self):
    # 除法运算963/0
    self.dr.find_element_by_id('com.android.calculator2:id/digit9').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit6').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit3').click()
    self.dr.find_element_by_id('com.android.calculator2:id/div').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit0').click()
    self.dr.find_element_by_id('com.android.calculator2:id/equal').click()
    result1 = self.dr.find_element_by_id('com.android.calculator2:id/edittext').text
    self.assertEqual(result1,'963÷0\n=∞')
    sleep(1)
    action1 = TouchAction(self.dr)
    e1 = self.dr.find_element_by_id('com.android.calculator2:id/del')
    action1.long_press(e1).wait(4000).perform()
    result1 = self.dr.find_element_by_id('com.android.calculator2:id/edittext').text
    self.assertEqual(result1, '')
    sleep(2)

def test_3_Multi(self):
    # 乘法运算258* 0.5=129
    self.dr.find_element_by_id('com.android.calculator2:id/digit2').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit5').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit8').click()
    self.dr.find_element_by_id('com.android.calculator2:id/mul').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit0').click()
    self.dr.find_element_by_id('com.android.calculator2:id/dot').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit5').click()
    self.dr.find_element_by_id('com.android.calculator2:id/equal').click()
    result1 = self.dr.find_element_by_id('com.android.calculator2:id/edittext').text
    self.assertEqual(result1,'258×0.5\n=129')
    self.dr.find_element_by_id('com.android.calculator2:id/cancel').click()
    sleep(2)

def test_4_plus(self):
    # 加法运算147 + 3=150
    self.dr.find_element_by_id('com.android.calculator2:id/digit1').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit4').click()
    self.dr.find_element_by_id('com.android.calculator2:id/digit7').click()
    self.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值