1. #coding=utf-8
  2. import os
  3. import HTMLTestRunner
  4. import unittest
  5. import time
  6. import sys
  7. from appium import webdriver
  8. from selenium.webdriver.common.by import By
  9. from selenium.webdriver.support.ui import WebDriverWait
  10. from selenium.webdriver.support import expected_conditions as EC
  11. from selenium.common.exceptions import TimeoutException
  12.  
  13. reload(sys)
  14. sys.setdefaultencoding('utf8')
  15.  
  16. #Returns abs path relative to this file and not cwd
  17. PATH = lambda p:os.path.abspath(
  18. os.path.join(os.path.dirname(__file__),p)
  19. )
  20.  
  21. #类继承unittest.TestCase类,从TestCase类继承是告诉unittest模块的方式,这是一个测试案例。
  22. class BangbanAndroidTests(unittest.TestCase):
  23. #setUp 用于设置初始化的部分,在测试用例执行前,这个方法中的函数将先被调用。
  24. def setUp(self):
  25. desired_caps = {}
  26. desired_caps['deviceName'] = '127.0.0.1:62001'
  27. desired_caps['platformName'] = 'Android'
  28. desired_caps['platformVersion'] = '4.4.2'
  29. desired_caps['appPackage'] = 'com.cbwlkj.cyzb' #邦办达人App的包名
  30. desired_caps['appActivity'] = 'com.hsdzkj.husong.ui.activity.IndexActivity' #启动时的Activity
  31. self.driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
  32.  
  33. #tearDown 方法在每个测试方法执行后调用,这个地方做所有清理工作,如退出
  34. def tearDown(self):
  35. self.driver.close_app()
  36. self.driver.quit()
  37.  
  38. #放置的就是我们的测试脚本了,这部分我们并不陌生;因为我们执行的脚本就在这里。
  39. def test_bangban_login(self):
  40. try:
  41. WebDriverWait(self.driver,10).until(
  42. EC.presence_of_element_located((By.ID,'com.cbwlkj.cyzb:id/contact_phone1'))
  43. )
  44. self.driver.find_element_by_id('com.cbwlkj.cyzb:id/contact_phone1').send_keys('')
  45. time.sleep(5)
  46. except TimeoutException:
  47. print u'达人登录页面加载失败'
  48. funcName = sys._getframe().f_code.co_name
  49. print funcName
  50. pngfile = "E:\\appium_code\\png\\" + funcName + timestr + ".png"
  51. print pngfile
  52. self.driver.get_screenshot_as_file(pngfile)
  53. raise
  54.  
  55. #unitest.main()函数用来测试 类中以test开头的测试用例
  56. if __name__ == '__main__':
  57. suite = unittest.TestSuite()
  58. suite.addTest(
  59. unittest.defaultTestLoader.loadTestsFromTestCase(BangbanAndroidTests)
  60. )
  61. timestr = time.strftime('%Y-%m-%d_%H%M%S', time.localtime(time.time()))
  62. filename = "E:\\appium_code\\report\\result_" + timestr + ".html"
  63. fp = open(filename, 'wb')
  64. runner = HTMLTestRunner.HTMLTestRunner(
  65. stream=fp,
  66. title='测试结果',
  67. description='测试报告'
  68. )
  69. runner.run(suite)
  70. fp.close() # 测试报告关闭

appium学习【四】:第一个appium脚本的更多相关文章

  1. 从0开始的Python学习013编写一个Python脚本

    通过之前的学习我们已经了解了Python的很多基础运用了,现在我们尝试着做一个有使用价值的小脚本. 问题 需求: 我想要一个可以给我备份重要文件的程序. 需求分析: 首先文件是有存储路径,文件的路径和 ...

  2. Appium学习实践(四)结构优化

    随着我们测试脚本中的用例越来越多,我们不可能将所有的用例都放在同一个脚本中,所以我们需要优化我们的结构.将脚本放在一个文件夹中,再通过别的脚本来执行脚本.这样,我们也可以有选择性的执行我们的脚本 先来 ...

  3. Appium学习实践(三)测试用例脚本以及测试报告输出

    之前Appium学习实践(二)Python简单脚本以及元素的属性设置中的脚本,会有一个问题,就是在每个测试用例完成之后都会执行tearDown,然后重新setUp,这样导致脚本的执行效率偏低,而且会有 ...

  4. Appium学习实践(二)Python简单脚本以及元素的属性设置

    1.简单的Python脚本 Appium中的设置与Appium学习实践(一)简易运行Appium中的一致 Launch后,执行脚本 #coding:utf-8 import unittest impo ...

  5. Appium学习路—脚本篇(启动app)

    启动之前的准备   1.脚本执行前,需要先启动appium的server端, 启动server方法: 打开appium客户端,点击右上角的Launch     2.iOS的测试只能在mac本上做   ...

  6. Appium(四):真实机第一个appium程序、模拟器第一个appium程序、查看元素

    1. 真实机第一个appium程序 学完了前面的知识,也将环境搭建好了,接下来我们就正式开始appium的学习了. 在做app自动化的时候,我们肯定是针对某个产品.某个软件进行测试,那么我们一定是先让 ...

  7. 第一个Appium脚本

    测试环境 Win 10 64bit Python 3.5 Appium 1.7.2 Andriod 5.1.1 模拟器& Android 5.1 MX4 测试App:考研帮Android版 3 ...

  8. 【Mac + Appium + Python3.6学习(四)】之常用的IOS自动化测试API总结

    环境: Appium:1.9.1 Appium-desktop:1.7.1 Xcode:10.0 IOS:iPhone5S(10.3.3) Mac:10.13.6 ①获取手机屏幕size:长.宽 &l ...

  9. Appium python自动化测试系列之认识Appium(四)

    ​4.1界面认识 在之前安装appium的时候说过我们有两种方法安装,也就有两种结果,一种是有界面的,一种是没有界面的,首先我们先讲一下有界面的,以及界面有哪些东西. 首先看第一幅图,如果你的是win ...

  10. Appium自动化测试环境的搭建及脚本执行

    之前搭建了robotium的环境,并使用了一下,因为需要兼顾到ios的测试,所以这次又搭建了appium的环境.关于Appium的介绍网上有很多了,也可以去它的官网学习,这里就不在赘述了. 具体搭建步 ...

随机推荐

  1. mybatis查询返回null解决方案

    mybatis查询返回null解决方案: 问题:查询出的列与javabean中的字段名不一致. 解决方案: 1.将javabean中的字段改为和查询出的列名一致: 2.将sql加入as改变列名,和ja ...

  2. eclipse pom.xml 报错org.apache.maven.plugin.war.WarMojo的解决办法

    如题,maven项目eclipse提示pom.ml有错,提示信息就是org.apache.maven.plugin.war.WarMojo. 然后执行 maven install 出现如下错误提示 [ ...

  3. 积累js中的一些问题及解决方案

    一.取字符串的第i位不兼容的问题 1.问题:对于字符串str来说,要获取第i位,常见的是str[i],但是在低版本的浏览器中不兼容,例如ie7. 2.解决:使用str.charAt(i); 二.使用定 ...

  4. ArrayList去除重复元素

    去除一个ArrayList的重复元素有两种方法:(ArrayList与Vector的存储结构是Object[],LinkedList是双向列表) 第一种是不需要借助临时list,用equals方法比较 ...

  5. 使用Navicat进行数据库对比同步

    使用Navicat进行数据库对比同步 当有多个数据库时,有时会出现结构或者数据不同步的问题,这时候可以使用navivat工具对比同步( 我的Navicat版本是11.0.17). 参考博客: 岁伏的博 ...

  6. D. Spongebob and Squares--cf599D(数学)

    http://codeforces.com/problemset/problem/599/D 题目大意:给你一个数k  让你求一个n*m的矩形里面包含k个正方形   输出有几个这样的矩形  分别是什么 ...

  7. 2017多校Round4(hdu6067~hdu6079)

    补题进度:10/13 1001 待填坑 1002(kmp+递推) 题意: 有长度为n(<=50000)的字符串S和长度为m(m<=100)的字符串T,有k(k<=50000)组询问, ...

  8. 分析Linux文件rwx属性的含义

    Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示 一般文件名外,连隐藏文件也会显示出来. ls -l(这个参数是字母L的小写,不是数字1) 这个命 ...

  9. Swift初体验之HelloWord+苹果Swift编程语言新手教程【中文版】

    AppDelegate.swift : <span style="font-size:24px;"><strong>// // AppDelegate.sw ...

  10. topcoder srm 552

    div1 250pt: 题意:用RGB三种颜色的球摆N层的三角形,要求相邻的不同色,给出RGB的数量,问最多能摆几个 解法:三种颜色的数量要么是全一样,要么是两个一样,另外一个比他们多一个,于是可以分 ...