一、发现页面
1. 导入类
from appium import webdriver
from Uiframe0test. public. faxian import FaXian
import unittest
import time
import os
2. SetUp
class AndroidTests ( unittest. TestCase) :
def setUp ( self) :
desired_caps = { }
desired_caps[ 'platformName' ] = 'android'
desired_caps[ 'platformVersion' ] = '8.0'
desired_caps[ 'deviceName' ] = 'Android Emulator'
desired_caps[ 'noReset' ] = 'True'
desired_caps[ 'appPackage' ] = 'cn.xiaochuankeji.tieba'
desired_caps[ 'appActivity' ] = '.ui.base.SplashActivity'
desired_caps[ 'unicodeKeyboard' ] = 'True'
desired_caps[ 'resetKeyboard' ] = 'True'
desired_caps[ 'automationName' ] = 'Uiautomator2'
self. driver = webdriver. Remote( 'http://localhost:4723/wd/hub' , desired_caps)
print ( "starttime:" + time. strftime( '%Y-%m-%d-%H-%M-%S' , time. localtime( time. time( ) ) ) )
3. tearDown
def tearDown ( self) :
filedir = 'D:/test/screenshot/'
TIME = time. strftime( '%Y-%m-%d-%H-%M-%S' , time. localtime( time. time( ) ) )
if not os. path. exists( filedir) :
os. makedirs( os. path. join( 'D:/' , 'test' , 'screenshot' ) )
print ( 'endTime:' + TIME)
screen_name = filedir + TIME + '.png'
self. driver. get_screenshot_as_file( screen_name)
self. driver. quit( )
4. 用例1-验证发现页面跳转功能
def testfaxian02_01 ( self) :
'''验证发现页面跳转功能'''
self. driver. implicitly_wait( 60 )
ele1 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='发现']" )
ele1. click( )
self. driver. implicitly_wait( 10 )
ele2 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='扩列']" )
self. assertEqual( "扩列" , ele2. text)
5. 用例2-进入发现-右友页面
def testfaxian02_02 ( self) :
'''进入发现-右友页面'''
FaXian( self. driver) . faxian( )
self. driver. implicitly_wait( 10 )
yy = self. driver. find_element_by_xpath( "//android.widget.ImageView[@resource-id='cn.xiaochuankeji.tieba:id/ivWeb_cover']" )
yy. click( )
self. driver. implicitly_wait( 10 )
ele1= self. driver. find_element_by_xpath( "//android.widget.TextView[@text='好友']" )
ele2 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='推荐']" )
ele3 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='最新']" )
self. assertEqual( "好友" , ele1. text)
self. assertEqual( "推荐" , ele2. text)
self. assertEqual( "最新" , ele3. text)
6. 用例3-在右友里面选择帖子并点赞
def testfaxian02_03 ( self) :
'''在右友里面选择帖子并点赞'''
FaXian( self. driver) . faxian( )
self. driver. implicitly_wait( 10 )
self. driver. find_element_by_xpath( "//android.widget.ImageView[@resource-id='cn.xiaochuankeji.tieba:id/ivWeb_cover']" ) . click( )
self. driver. implicitly_wait( 10 )
aa = self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/like_num" )
bb= aa. text
self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/like_icon" ) . click( )
cc = aa. text
self. assertEqual( int ( bb) + 1 , int ( cc) )
二、首页
1. 导入类
from appium import webdriver
from selenium. webdriver. support. ui import WebDriverWait
from selenium. webdriver. support import expected_conditions as EC
import unittest
import time
import os
2. 用例1-验证首页导航栏文案显示是否正常
def testshouye01_01 ( self) :
'''验证首页导航栏文案显示是否正常'''
self. driver. implicitly_wait( 60 )
ele1 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='关注']" )
ele2 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='话题']" )
ele3 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='推荐']" )
ele4 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='视频']" )
ele5 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='图文']" )
ele6 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='生活']" )
self. assertEqual( "关注" , ele1. text)
self. assertEqual( "话题" , ele2. text)
self. assertEqual( "推荐" , ele3. text)
self. assertEqual( "视频" , ele4. text)
self. assertEqual( "图文" , ele5. text)
self. assertEqual( "生活" , ele6. text)
time. sleep( 5 )
self. driver. swipe( 900 , 150 , 400 , 150 , 3000 )
time. sleep( 10 )
ele7 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='语玩']" )
ele8 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='游戏']" )
ele9 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='三坑']" )
self. assertEqual( "语玩" , ele7. text)
self. assertEqual( "游戏" , ele8. text)
self. assertEqual( "三坑" , ele9. text)
3. 用例2-验证首页功能模块文案显示是否正常
def testshouye01_02 ( self) :
'''验证首页功能模块文案显示是否正常'''
self. driver. implicitly_wait( 60 )
ele1 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='最右']" )
ele2 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='发现']" )
ele3 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='消息']" )
ele4 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='我的']" )
self. assertEqual( "最右" , ele1. text)
self. assertEqual( "发现" , ele2. text)
self. assertEqual( "消息" , ele3. text)
self. assertEqual( "我的" , ele4. text)
4. 用例3-验证发布帖子功能
def testshouye01_03 ( self) :
'''验证发布帖子功能'''
self. driver. implicitly_wait( 60 )
ele1 = self. driver. find_elements_by_id( "cn.xiaochuankeji.tieba:id/iconTabItem" ) [ 2 ]
ele1. click( )
self. driver. implicitly_wait( 10 )
ele2 = self. driver. find_element_by_xpath( "//android.widget.EditText[@text='我的快乐源泉']" )
text = "我的快乐源泉最右APP" + time. strftime( '%Y-%m-%d-%H-%M-%S' , time. localtime( time. time( ) ) )
ele2. send_keys( text)
self. driver. find_elements_by_id( "cn.xiaochuankeji.tieba:id/tvTopicName" ) [ 0 ] . click( )
self. driver. find_element_by_xpath( "//android.widget.TextView[@text='发布']" ) . click( )
sendContent = self. driver. find_elements_by_id( "cn.xiaochuankeji.tieba:id/expand_content_view" )
List = [ ]
for i in range ( 0 , len ( sendContent) ) :
List. append( sendContent[ i] . text)
List = "" . join( List)
self. assertIn( text, List)
5. 用例4-验证关注功能
def testshouye01_04 ( self) :
'''验证关注功能'''
time. sleep( 10 )
while True :
try :
self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/v_epaulet_follow" ) . click( )
break
except :
height = self. driver. get_window_size( ) [ 'height' ]
width = self. driver. get_window_size( ) [ 'width' ]
self. driver. swipe( width * 0.5 , height * 0.8 , width * 0.5 , height * 0.2 , 1000 )
toast = ( "xpath" , '//*[contains(@text,"关注成功")]' )
ele = WebDriverWait( self. driver, 10 , 0.1 ) . until( EC. presence_of_element_located( toast) )
self. assertEqual( "关注成功" , ele. text)
6. 用例5-验证页面刷新功能
def testshouye01_05 ( self) :
'''验证页面刷新功能'''
self. driver. implicitly_wait( 60 )
name = self. driver. find_elements_by_id( "cn.xiaochuankeji.tieba:id/simple_member_tv_name" ) [ 0 ]
aa = name. text
self. driver. implicitly_wait( 10 )
self. driver. find_element_by_xpath( "// android. widget. ImageView\
[ @resource- id = 'cn.xiaochuankeji.tieba:id/home_refresh_view' ] ") . click( )
self. driver. implicitly_wait( 10 )
bb = self. driver. find_elements_by_id( "cn.xiaochuankeji.tieba:id/simple_member_tv_name" ) [ 0 ]
self. assertNotEqual( aa, bb. text)
7. 用例6-验证帖子屏蔽功能
def testshouye01_06 ( self) :
'''验证帖子屏蔽功能'''
self. driver. implicitly_wait( 60 )
ele1 = self. driver. find_element_by_xpath( "// android. widget. ImageView\
[ @resource- id = 'cn.xiaochuankeji.tieba:id/simple_decorator_delete' ] ")
ele1. click( )
self. driver. find_element_by_xpath( "//android.widget.TextView[@text='不喜欢该用户']" ) . click( )
toast = ( "xpath" , '//*[contains(@text,"将减少类似内容推荐")]' )
ele2 = WebDriverWait( self. driver, 10 , 0.1 ) . until( EC. presence_of_element_located( toast) )
self. assertEqual( "将减少类似内容推荐" , ele2. text)
8. 用例7-验证搜索功能
def testshouye01_07 ( self) :
'''验证搜索功能'''
self. driver. implicitly_wait( 60 )
ele = self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/ic_search_b" ) . click( )
self. driver. implicitly_wait( 10 )
search = self. driver. find_element_by_class_name( "android.widget.EditText" )
search. send_keys( '圣诞节' )
time. sleep( 5 )
self. driver. keyevent( 84 )
aa= self. driver. find_element_by_xpath( "//android.widget.EditText[@resource-id='cn.xiaochuankeji.tieba:id/container_search_input']" )
bb = aa. text
title = self. driver. find_elements_by_id( "cn.xiaochuankeji.tieba:id/title" )
List = [ ]
for i in range ( 0 , len ( title) ) :
List. append( title[ i] . text)
List = "" . join( List)
self. assertIn( "圣诞节" , List)
三、消息页面
1. 导入类
from appium import webdriver
from Uiframe0test. public. xiaoxi import XiaoXi
import unittest
import time
import os
2. 用例1-验证消息页面跳转功能
def testxiaoxi03_01 ( self) :
'''验证消息页面跳转功能'''
self. driver. implicitly_wait( 60 )
ele = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='消息']" )
ele. click( )
self. driver. implicitly_wait( 10 )
ele1 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='提醒']" )
ele2 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='私信']" )
self. assertEqual( "提醒" , ele1. text)
self. assertEqual( "私信" , ele2. text)
3. 用例2-私信列表底部显示
def testxiaoxi03_02 ( self) :
'''私信列表底部显示'''
XiaoXi( self. driver) . xiaoxi( )
self. driver. implicitly_wait( 10 )
self. driver. find_element_by_xpath( "//android.widget.TextView[@text='私信']" ) . click( )
while True :
try :
ele = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='没有更多啦~']" )
self. assertEqual( "没有更多啦~" , ele. text)
break
except :
height = self. driver. get_window_size( ) [ 'height' ]
width = self. driver. get_window_size( ) [ 'width' ]
self. driver. swipe( width * 0.5 , height * 0.8 , width * 0.5 , height * 0.2 , 1000 )
4. 用例3-删除一条私信功能
def testxiaoxi03_03 ( self) :
'''删除一条私信功能'''
XiaoXi( self. driver) . xiaoxi( )
self. driver. implicitly_wait( 10 )
self. driver. find_element_by_xpath( "//android.widget.TextView[@text='私信']" ) . click( )
name1 = self. driver. find_elements_by_id( "cn.xiaochuankeji.tieba:id/name" )
aa = name1[ 0 ] . text
self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/ivBtn_delete_batch" ) . click( )
self. driver. implicitly_wait( 10 )
self. driver. find_elements_by_id( "cn.xiaochuankeji.tieba:id/ivBtn_select" ) [ 0 ] . click( )
self. driver. implicitly_wait( 10 )
self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/vBtn_delete" ) . click( )
self. driver. implicitly_wait( 10 )
self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/ZYDialog_positive_btn" ) . click( )
self. driver. implicitly_wait( 10 )
name2 = self. driver. find_elements_by_id( "cn.xiaochuankeji.tieba:id/name" )
bb = name2[ 0 ] . text
self. assertNotEqual( aa, bb)
5. 用例4-消息-提醒页面显示
def testxiaoxi03_04 ( self) :
'''消息-提醒页面显示'''
XiaoXi( self. driver) . xiaoxi( )
self. driver. find_element_by_xpath( "//android.widget.TextView[@text='提醒']" ) . click( )
self. driver. implicitly_wait( 10 )
ele1 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='小右通知']" )
ele2 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='收到的@']" )
ele3 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='新增粉丝']" )
ele4 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='好友请求']" )
self. assertEqual( "小右通知" , ele1. text)
self. assertEqual( "收到的@" , ele2. text)
self. assertEqual( "新增粉丝" , ele3. text)
self. assertEqual( "好友请求" , ele4. text)
6. 用例5-消息-提醒页面显示
def testxiaoxi03_05 ( self) :
'''消息-提醒页面为空时界面显示'''
XiaoXi( self. driver) . xiaoxi( )
self. driver. find_element_by_xpath( "//android.widget.TextView[@text='提醒']" ) . click( )
self. driver. implicitly_wait( 10 )
ele = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='网络一线牵,主动才有缘~']" )
self. assertEqual( "网络一线牵,主动才有缘~" , ele. text)
四、public
1.faxian.py
class FaXian ( object ) :
def __init__ ( self, driver) :
self. driver = driver
def faxian ( self) :
self. driver. implicitly_wait( 60 )
ele1 = self. driver. find_element_by_xpath( "//android.widget.TextView[@text='发现']" )
ele1. click( )
2. log_create.py
import time
class createlog ( object ) :
def __init__ ( self, driver) :
self. driver = driver
def log ( self) :
time. sleep( 3 )
self. driver. find_element_by_xpath( "//div[@class='container']/ul/a[5]/li" ) . click( )
time. sleep( 3 )
self. driver. find_element_by_xpath( "//main[@class='el-main']/div/div/button/span" ) . click( )
time. sleep( 3 )
3. loginApp.py
import time
class Mylogin ( object ) :
def __init__ ( self, driver) :
self. driver = driver
def login ( self) :
self. driver. implicitly_wait( 60 )
self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/me_item" ) . click( )
time. sleep( 2 )
self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/tv_notLogin_goLogin" ) . click( )
time. sleep( 1 )
self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/login_mode" ) . click( )
self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/phone_num_edit" ) . send_keys( "15127409611" )
self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/code_edit" ) . send_keys( "a123456" )
self. driver. find_element_by_id( "cn.xiaochuankeji.tieba:id/login" ) . click( )
time. sleep( 5 )
4. xiaoxi.py
import time
class XiaoXi ( object ) :
def __init__ ( self, driver) :
self. driver = driver
def xiaoxi ( self) :
self. driver. implicitly_wait( 60 )
self. driver. find_element_by_xpath( "//android.widget.TextView[@text='消息']" ) . click( )
time. sleep( 5 )