app测试单排日记-2020/5/2-Python+unittest

1.unittest测试框架

#导包
import unittest
from appium import webdriver
from time import sleep

class Test(unittest.TestCase):

    def setUp(self) -> None:
        device = {}
        device['deviceName']='127.0.0.1:62026'
        device['platformName']='Android'
        device['platformVersion']='7.1.2'
        device['appPackage']=''
        device['appActivity']=''
        # 指定每次运行测试前不重新安装 App
        device['noReset'] = True
        # 输入中文字符
        device['unicodeKeyboard'] = True
        device['resetKeyboard'] = True
        global driver
        driver = webdriver.Remote('http://localhost:4723/wd/hub',device)


    def tearDown(self) -> None:
        driver.quit()
        sleep(3)

    def test01(self):
        pass


if __name__ == '__main__':
    #unittest.main()
    suit=unittest.TestSuite()
    case_list=[]
    for i in case_list:
        suit.addTest(Test(i))
    unittest.TextTestRunner(verbosity=2).run(suit)

2.unittest断言

2.1 assert 断言
 断言 str1 是否在 str2 中
assert str1 in str2
self.assertIn(str1,str2)
 断言 str1 和 str2 是否相等
assert 表达式 1==表达式 2
self.assertEqual(实际, 预期)
2.2 WebApp 中的断言
 获得网页返回结果/所有页面元素
driver.page_source
2.3 unittest断言使用
# 导包
import unittest
from appium import webdriver
from time import sleep
driver=null

class Test(unittest.TestCase):

    def setUp(self) -> None:
        device = {}
        device['deviceName'] = '127.0.0.1:62026'
        device['platformName'] = 'Android'
        device['platformVersion'] = '7.1.2'
        device['appPackage'] = 'com.android.browser'
        device['appActivity'] = '.BrowserActivity'
        # 指定每次运行测试前不重新安装 App
        device['noReset'] = True
        # 输入中文字符
        device['unicodeKeyboard'] = True
        device['resetKeyboard'] = True
        global driver
        driver = webdriver.Remote('http://localhost:4723/wd/hub', device)

    def tearDown(self) -> None:
        global driver
        sleep(5)
        driver.quit()


    def test01(self):
        global driver
        driver.find_element_by_id('index-kw').send_keys('app测试')
        # 回车键
        driver.press_keycode(66)
        # 获得网页返回结果 / 所有页面元素
        str1 = driver.page_source
        self.assertIn('resource-id="page"', str1)


if __name__ == '__main__':
    # unittest.main()
    suit = unittest.TestSuite()
    case_list = ['test01']
    for i in case_list:
        suit.addTest(Test(i))
    unittest.TextTestRunner(verbosity=2).run(suit)

在这里插入图片描述

2.4使用xpath定位
driver.find_element_by_xpath('//*[contains(@text,"包含的字符串")]')

在这里插入图片描述

from appium import webdriver
from time import sleep

device = {}
device['deviceName'] = '127.0.0.1:62026'
device['platformName'] = 'Android'
device['platformVersion'] = '7.1.2'
#打开微信
device['appPackage'] = 'com.tencent.mm'
device['appActivity'] = 'com.tencent.mm.ui.LauncherUI'
# 指定每次运行测试前不重新安装 App
device['noReset'] = True
# 输入中文字符
device['unicodeKeyboard'] = True
device['resetKeyboard'] = True
driver = webdriver.Remote('http://localhost:4723/wd/hub', device)

#使用Xpath定位登录按键
sleep(3)
driver.find_element_by_xpath('//*[contains(@text,"登录")]').click()

在这里插入图片描述

2.5 切换到对话框(切换窗口)

等最大超时时间,如果没有出现新activity,则继续往下执行,如果出现了新activity,则不用等了,直接往下执行

driver.wait_activity("新activity 名称",超时时间)

如,微信登录时,会弹出一个窗口欧,要求获取权限。我们需要使用,driver.wait_activity("窗口的activity 名称",超时时间),切换到窗口
在这里插入图片描述
在这里插入图片描述

from appium import webdriver
from time import sleep

device = {}
device['deviceName'] = '192.168.190.102:5555'
device['platformName'] = 'Android'
device['platformVersion'] = '8.1.0'
# 打开微信
device['appPackage'] = 'com.tencent.mm'
device['appActivity'] = 'com.tencent.mm.ui.LauncherUI'
# 指定每次运行测试前不重新安装 App
device['noReset'] = True
# 输入中文字符
device['unicodeKeyboard'] = True
device['resetKeyboard'] = True
driver = webdriver.Remote('http://localhost:4723/wd/hub', device)

# 切换到活动窗口
driver.wait_activity("com.android.packageinstaller.permission.ui.GrantPermissionsActivity", 5)

2.6操作弹窗

导包

from selenium.webdriver.support.ui import WebDriverWait
等待模块
from selenium.webdriver.support import expected_conditions
判断模块

首选查找Xpath路径
注意"xpath"中的“x”小写

toast=('xpath','//*[contains(@text,"要找的字符串")]')

查询Xpath中包含要找的字符串的的元素,最多查询10s,每0.1s查询一次,

t=WebDriverWait(driver,10,0.1).until(expected_conditions.presence_of_element_located(toast))

操作找出来的元素

t.click()
from appium import webdriver
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions

device = {}
device['deviceName'] = '192.168.190.102:5555'
device['platformName'] = 'Android'
device['platformVersion'] = '8.1.0'
# 打开微信
device['appPackage'] = 'com.tencent.mm'
device['appActivity'] = 'com.tencent.mm.ui.LauncherUI'
# 指定每次运行测试前不重新安装 App
device['noReset'] = True
# 输入中文字符
device['unicodeKeyboard'] = True
device['resetKeyboard'] = True
driver = webdriver.Remote('http://localhost:4723/wd/hub', device)

# 切换到活动窗口
iftrue = driver.wait_activity(".permission.ui.GrantPermissionsActivity", 5)
print(iftrue)
# 根据Xpath包含的部分文本,获取想要操作元素的Xpath
toast=('xpath','//*[contains(@text,"ALLOW")]')
# 查询Xpath中包含要找的字符串的的元素,最多查询10s,每0.1s查询一次,
t = WebDriverWait(driver, 10, 0.1).until(expected_conditions.presence_of_element_located(toast))
t.click()

在这里插入图片描述

2.7 滑屏

获得屏幕大小/屏幕分辨率

width=driver.get_window_size()['width']
height=driver.get_window_size()['height']

向上划屏,每次间隔 1000ms

for i in range(1,7): #滑屏次数
driver.swipe(width/2,height*3/4,width/2,height/4,1000) #每次从width/2,height*3/4开始,width/2,height/4结束
2.8 代码开启关闭app

关闭自动启动

device['autoLaunch'] = False

开启app

driver.launch_app()

关闭app

driver.close_app()

清除设置以后启动或重启 App

driver.reset()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值