#coding=utf-8
import os
import HTMLTestRunner
import unittest
import time
import sys
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
reload(sys)
sys.setdefaultencoding('utf8')
#Returns abs path relative to this file and not cwd
PATH = lambda p:os.path.abspath(
os.path.join(os.path.dirname(__file__),p)
)
#类继承unittest.TestCase类,从TestCase类继承是告诉unittest模块的方式,这是一个测试案例。
class BangbanAndroidTests(unittest.TestCase):
#setUp 用于设置初始化的部分,在测试用例执行前,这个方法中的函数将先被调用。
def setUp(self):
desired_caps = {}
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.2'
desired_caps['appPackage'] = 'com.cbwlkj.cyzb' #邦办达人App的包名
desired_caps['appActivity'] = 'com.hsdzkj.husong.ui.activity.IndexActivity' #启动时的Activity
self.driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
#tearDown 方法在每个测试方法执行后调用,这个地方做所有清理工作,如退出
def tearDown(self):
self.driver.close_app()
self.driver.quit()
#放置的就是我们的测试脚本了,这部分我们并不陌生;因为我们执行的脚本就在这里。
def test_bangban_login(self):
try:
WebDriverWait(self.driver,10).until(
EC.presence_of_element_located((By.ID,'com.cbwlkj.cyzb:id/contact_phone1'))
)
self.driver.find_element_by_id('com.cbwlkj.cyzb:id/contact_phone1').send_keys('18602508223')
time.sleep(5)
except TimeoutException:
print u'达人登录页面加载失败'
funcName = sys._getframe().f_code.co_name
print funcName
pngfile = "E:\\appium_code\\png\\" + funcName + timestr + ".png"
print pngfile
self.driver.get_screenshot_as_file(pngfile)
raise
#unitest.main()函数用来测试 类中以test开头的测试用例
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(
unittest.defaultTestLoader.loadTestsFromTestCase(BangbanAndroidTests)
)
timestr = time.strftime('%Y-%m-%d_%H%M%S', time.localtime(time.time()))
filename = "E:\\appium_code\\report\\result_" + timestr + ".html"
fp = open(filename, 'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title='测试结果',
description='测试报告'
)
runner.run(suite)
fp.close() # 测试报告关闭