from time import sleep
from appium import webdriver
import pytest class TestXueqiu: user_profile_id = "user_profile_icon"
login_more_id = "iv_login_more"
login_account_id = "login_account"
login_password_id = "login_password"
button_next_id = "button_next"
md_content_id = "md_content"
md_buttonDefaultPositive_id = "md_buttonDefaultPositive"
action_back_id = "iv_action_back"
buttonDefaultNegative_id = "md_buttonDefaultNegative"
action_back1_id = "action_back"
home_search_id = "home_search"
search_input_text_id = "search_input_text"
search_name_id = "name"
stockName_id = "stockName"
action_close_id = "action_close" def setup_class(self): caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "8.1.0"
caps["deviceName"] = "60c106df0302"
caps["appPackage"] = "com.xueqiu.android"
caps["appActivity"] = ".view.WelcomeActivityAlias"
caps["noReset"] = True self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
self.driver.implicitly_wait(20) def test_wrong_phone(self): self.driver.find_element_by_id(self.user_profile_id).click()
self.driver.find_element_by_id(self.login_more_id).click()
login_account = self.driver.find_element_by_id(self.login_account_id)
login_account.clear()
login_account.send_keys("1311111111111111111")
login_password = self.driver.find_element_by_id(self.login_password_id)
login_password.clear()
login_password.send_keys("123456abc")
self.driver.find_element_by_id(self.button_next_id).click()
text = self.driver.find_element_by_id(self.md_content_id).get_attribute("text")
assert text == "手机号码填写错误"
self.driver.find_element_by_id(self.md_buttonDefaultPositive_id).click() def test_wrong_password(self):
login_account = self.driver.find_element_by_id(self.login_account_id)
login_account.clear()
login_account.send_keys("15958020294")
login_password = self.driver.find_element_by_id(self.login_password_id)
login_password.clear()
login_password.send_keys("123456abc111")
self.driver.find_element_by_id(self.button_next_id).click()
text = self.driver.find_element_by_id(self.md_content_id).get_attribute("text")
assert text == "用户名或密码错误"
self.driver.find_element_by_id(self.md_buttonDefaultPositive_id).click()
self.driver.find_element_by_id(self.action_back_id).click()
self.driver.find_element_by_id(self.buttonDefaultNegative_id).click()
self.driver.find_element_by_id(self.action_back1_id).click() @pytest.mark.parametrize(("search", "result"), [
("alibaba", "阿里巴巴"), ("xiaomi", "小米"), ("google", "谷歌")
])
def test_search(self, search, result):
self.driver.find_element_by_id(self.home_search_id).click()
self.driver.find_element_by_id(self.search_input_text_id).send_keys(search)
self.driver.find_elements_by_id(self.search_name_id)[0].click()
text = self.driver.find_elements_by_id(self.stockName_id)[0].get_attribute("text")
assert result in text
self.driver.find_element_by_id(self.action_close_id).click() def teardown_class(self):
sleep(5)
self.driver.quit()

  

第一个appium测试用例的更多相关文章

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

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

  2. appium学习【四】:第一个appium脚本

    #coding=utf-8 import os import HTMLTestRunner import unittest import time import sys from appium imp ...

  3. 一个appium 博客

    http://www.cnblogs.com/tobecrazy/category/699177.html appium Java控制Appium server start/stop 摘要: 相信很多 ...

  4. 第二章 mac上运行第一个appium实例

    一.打开appium客户端工具 1      检查环境是否正常运行: 点击左边第三个图标 这是测试你环境是否都配置成功了 2      执行的过程中,遇到Could not detect Mac OS ...

  5. 测试工具之Jmeter(创建一个简单测试用例)

    前面介绍了如何使用badboy录制jmeter脚本,以及如何导入脚本并进行测试 这里介绍下手动创建测试用例,主要步骤如下: 1.创建线程组 第一次打开Jmeter只有一个测试计划,右键“测试计划”选择 ...

  6. 第一个appium的Demo

    原文来自:一颗糖果  http://www.cnblogs.com/linglingyuese/articles/8418311.html 一.环境搭建 略(后期补) 二.创建一个测试apk包的项目 ...

  7. XMind2TestCase:一个高效测试用例设计的解决方案!

    一.背景 软件测试过程中,最重要.最核心就是测试用例的设计,也是测试童鞋.测试团队日常投入最多时间的工作内容之一. 然而,传统的测试用例设计过程有很多痛点: 1.使用Excel表格进行测试用例设计,虽 ...

  8. Python编写Appium测试用例(1)

    有段时间没有使用python编写测试用例了,很长时间以来,感觉appium这个测试工具确实不错,今天又重新拿起来,分享一下自己学习的一些用例,欢迎大家一起交流.学习! 1.登录客户端 #coding= ...

  9. Appium移动自动化测试-----(六)4.运行第一个Appium脚本

    新建maven空白工程 前置条件:安装eclipse或IntelliJ IDEA,及其maven插件,请自行百度 新建的工程如下: 新建目录apps,并将下载的安装包,拷贝到该目录下 打开POM增加依 ...

随机推荐

  1. Java后台开发方向面试题集合

    内容会不断更新. 初衷是每次看面经肯定都会有一些一时反应不过来的问题,希望集中记录一下便于自己查看. 而答案部分谷歌就很好,当然有些问题可能需要多次谷歌. 对于一些记不住的答案,我也会持续写上一些. ...

  2. MySQL 复制已存在的表生成新表

    从已有的表创建一个新的空表 CREATE TABLE new_table LIKE old_table; 注意: create table ... like 创建的表会保留原有表的字段.索引的定义,但 ...

  3. httprouter框架 (Gin使用的路由框架)

    之前在Gin中已经说到, Gin比Martini的效率高好多耶, 究其原因是因为使用了httprouter这个路由框架, httprouter的git地址是: httprouter源码. 今天稍微看了 ...

  4. 【WPF】EntityframeworkCore NLog出力设置

    最近在用EFcore,由于不熟悉,经常出现一些异常都不知道如何排查,只能把EFcore的执行记录打印出来调查.确实简化了很多问题的调查. 官网提供了Asp.net Core与.net core 应用的 ...

  5. Python开发专属壁纸下载与轮换程序

    本人对于壁纸一直偏佛系,不爱特意去找一堆壁纸.因此用Python简单地搞了一个自动下载壁纸,定时随机轮换的功能来自娱自乐,顺便分享给大家. 原文链接:https://www.codernice.top ...

  6. 网页布局——grid语法属性详解

    grid目前兼容性目前还可以,主流浏览器对它的支持力度很大,ie9,10宣布它未来不久会对它有很好的支持,目前则需要使用过时的语法.我相信不久的将来grid将成为每一个前端工作人员必备的布局技能. 属 ...

  7. 常见的javascript跨站

    第一类: <img src=javascript:alert() /> <iframe src=javascript:alert()></iframe> <s ...

  8. .netCore+Vue 搭建的简捷开发框架--目录

    .netCore+Vue 搭建的简捷开发框架 .netCore+Vue 搭建的简捷开发框架 (2)--仓储层实现和EFCore 的使用 .netCore+Vue 搭建的简捷开发框架 (3)-- Ser ...

  9. Cocos2d-x 学习笔记(11.5) SkewTo SkewBy

    1. SkewTo SkewBy node朝X和Y方向的歪斜.SkewTo是SkewBy的父类. 1.1 成员变量 create方法 // 两者成员变量一致 float _skewX; float _ ...

  10. 懒要懒到底,能自动的就不要手动,Hibernate正向工程完成Oracle数据库到MySql数据库转换(含字段转换、注释)

    需求描述 需求是这样的:因为我们目前的一个老项目是Oracle数据库的,这个库呢,数据库是没有注释的,而且字段名和表名都是大写风格,比如 在代码层面的po呢,以前也是没有任何注释的,但是经过这些年,大 ...