1.appium server启动
$ appium -g android.log
[ Appium] Welcome to Appium v1.20.2
[ Appium] Non-default server args:
[ Appium] logFile: android.log
[ Appium] Appium REST http interface listener started on 0.0.0.0:4723
2.执行脚本
from appium import webdriver
caps = { }
caps[ "platformName" ] = "Android"
caps[ "deviceName" ] = "demo"
caps[ "appActivity" ] = "com.czy.hiconmultiscreen.mvp.ui.splash.SplashActivity"
caps[ "appPackage" ] = "com.czy.hiconmultiscreen"
caps[ "autoGrantPermissions" ] = "true"
caps[ "ensureWebviewsHavePages" ] = True
caps[ 'noReset' ] = True
driver = webdriver.Remote( "http://localhost:4723/wd/hub" , caps)
el2 = driver.find_element_by_xpath( "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.widget.ImageView" )
el2.click( )
el3 = driver.find_element_by_id( "com.czy.hiconmultiscreen:id/login_password" )
el3.click( )
el4 = driver.find_element_by_id( "com.czy.hiconmultiscreen:id/backImageView" )
el4.click( )
el5 = driver.find_element_by_id( "com.czy.hiconmultiscreen:id/backImageView" )
el5.click( )
3.具体操作
适当加等待时间 提示没有找到元素是因为页面还没有加载完成,脚本就开始执行下一步了,所以会有元素找不到。解决方法是加上延时
selenium.common.exceptions.StaleElementReferenceException: Message: The element 'By.id: com.czy.hiconmultiscreen:id/backImageView' does not exist in DOM anymore
import time
time.sleep( 2)
TouchAction (1)使用scroll时,Android手机坐标变化,页面未真正滑动。解决办法:将press换成long_press (2)可在手机开发者选项中,打开“显示触摸操作”和“指针位置”
size = self.driver.get_window_size( )
action = TouchAction( self.driver)
action.long_press( x= size[ 'width' ] *0.8, y= size[ 'height' ] *0.8) .move_to( x= size[ 'width' ] *0.2, y= size[ 'height' ] *0.2) .release( ) .perform( )
time.sleep( 2)