这是个好办法,能不能给给思路,我逻辑感不是很强啊
因为在 appium 定位元素的时候随着页面的改变(比如:有时候会弹出授权窗口),元素的 xpath 也随之发生改变,就会有很多 try except,多了的话还会 try 语句还嵌套 try 语句,感觉页面比较乱,
try exception 和 try except 不是一样?
你好编码如下:
import unittest
import time
import HTMLTestRunner
from appium import webdriver
import sys
reload(sys)
sys.setdefaultencoding('utf8')
index = 1
class mime_test(unittest.TestCase):
def setUp(self):
desired_caps = {
'app': 'com.herconnect',
'udid': '9cb9d70a66ada0e628b15242ac7abc2feecf8213',
'platformName': 'iOS',
'platformVersion': '9.3',
'deviceName': '0',
'unicodeKeyboard': True,
'resetKeyboard': True
}
self.driver = webdriver.Remote('http://19:4723/wd/hub', desired_caps)
def tearDown(self):
self.driver.quit()
#
def test_8_QQ_wechat(self):
self.driver.find_element_by_name(u'下次再说').click()
print(u'下次再说')
time.sleep(3)
if name=='main':
suit = unittest.TestSuite()
suit.addTest(mime_test('test_8_QQ_wechat'))
# suit.addTest(unittest.makeSuite(mime_test))
timestr = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
filename = '/Users/huanshi/Desktop/img/' + timestr + '.html'
fp = open(filename,"wb")
html_runner = HTMLTestRunner.HTMLTestRunner(stream= fp , title= u'测试报告' , description= u'执行结果')
html_runner.run(suit)
看着像是什么,愿闻其详
我也想在 mac 实现这个截图功能,但是我找不到 report_template.html,这个文件放在哪里,能否告知这个路径要怎么找
你 python 什么版本的,报告有出来吗
我那个下载完就可以用了,适用 python3,Python2 不适用
你可以试下,我是没试过,如果可以的话说一哈,下次我也这么用
要,像上面评论第一条的那样改,有用
要,上面用户 xiaij 给的有用,就是第一条评论
不是,成功也会截图
@lanyou315 不能精确到秒,截图是异步加载的,差不都就是我进入一个页面,然后 就已经截图了,然后那一串代码运行完后,再重新截图覆盖原本那张,然后会比对两次的时间,如果时间不一样就判断截图失败,所以精确到分就可以了;
还有你说的截图比较慢,首先 python 运行代码就是偏慢,也要看下你电脑配置怎么样,我这里执行的话是没出现报告生成比较慢的问题
@lanyou315 你 index 要在 tearDown 外面先定义,可以写在:
teardown 中写:
@gjxlaosiji 我当时结构比较乱,后来结构修改为下面这样就可以运行了
互相帮助,我的问题也解决了。
链接地址:http://pan.baidu.com/s/1skXC8m5
用例中也要写一些方法,才能实现截图,下面是一个简答 的用例
import unittest
import HTMLTestRunner
from selenium import webdriver
import time
index = 1 # 这个也和截图有关
class MyTest(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.maximize_window()
self.driver.implicitly_wait(10)
self.base_url = "http://www.baidu.com"
png_file = 'E:\Test_png\' # 图片存放地址,这个地址要想创建好
def screenshot(self, index): # 需要写这个方法才能实现截图
timestr = time.strftime('%Y%m%d',time.localtime(time.time())) # 精确到秒会无法截图,要和 htmltestrunner.py 文件格式一致
img_name = timestr + '_' + str(index) + '.png' # 图片以时间 + 第几次截图命名
self.driver.get_screenshot_as_file('%s%s' % (self.png_file,img_name)) # 图片保存在定义路径中
return img_name
def test1_baidu(self):
print('用例开始执行...')
driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("tttttttt")
driver.find_element_by_id("su").click()
time.sleep(2)
print('用例执行结束!')
def tearDown(self):
global index
print(index)
self.screenshot(index)
index += 1
print('index2' + str(index))
self.driver.quit()
if name == 'main':
suite = unittest.TestSuite()
suite.addTest(MyTest("test1_baidu"))
timestr = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
filename = 'E:\Test_png\' + timestr + '.html'
runner = unittest.TextTestRunner()
fp = open(filename,'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'测试结果:',description=u'运行结果如下:')
runner.run(suite)
fp.close
可以啊,你看下和你一不一样,还是你那里生成图片有什么问题?
@xiaoj 可以,问题已解决,谢谢。我是网上下载的 HTMLTestRunner 没错
解决了
我可以完整截图了,但是代码看不是很懂,在 HTMLTestRunner 文件中的 screenshot 方法和测试脚本的 screenshot 各有什么作用呢? 脚本上的代码是对截图进行命名,然后 HTMLTestRunner 中的 screenshot 好像也是干的这件事?
功能测试,公司 3 个月没事干,自学 appium+python,能写简单的自动化,但是目前还没实质性进展
谢谢分享
恩,接着修炼
感觉投简历的不少吧