1. 程式人生 > >Ruby+appium實現截圖、滑屏、長按、日誌輸出到本地文件夾

Ruby+appium實現截圖、滑屏、長按、日誌輸出到本地文件夾

username 實例 方法 pytho 日誌 用戶名 read 清除 文件夾

require ‘rubygems‘

require ‘appium_lib‘
require ‘date‘
require ‘logger‘
require ‘pathname‘
require ‘thread‘
require"fileutils"
capabilities = {
‘appium-version‘=> ‘1.4.13.1‘,
‘platformName‘=> ‘Android‘,
‘platformVersion‘=> ‘4.4.2‘,
‘appActivity:‘=>‘com.worktile.ui.external.WelcomeActivity‘,
‘app‘=>
‘D:\\WorkspacePython\\apk\\wt-android-3.12.3.apk‘,
‘deviceName‘=>‘VPhone‘
}
server_url = "http://127.0.0.1:4723/wd/hub"
dr = Appium::Driver.new(caps: capabilities).start_driver
Appium.promote_appium_methods Object
#創建日誌路徑,打印日誌
def loginfo(s = "#{$!.message} #{$@[0]} ")
wait do
url = file()
#判斷需寫入的日誌內容是否為空,如果為空則不需要寫入
return if not s
#創建logger實例
logger = Logger.new(url+(Time.now).strftime("%Y-%m-%d")+"_install_detail.log", ‘daily‘) #daily/weekly/monthly.
#賦予logger控制輸出級別為DEBUG。DEBUG含義是:既可以在
#控制臺看到需寫入的日誌信息,又寫入到了日誌文件中
logger.level = Logger::INFO
logger.info(‘‘){s}
logger.close
end
end
#清除文件內上一次創建的內容,該方法調用必須寫在所有方法之前
def Logdelete()
wait do
url = file()
io = File.open(url+(Time.now).strftime("%Y-%m-%d")+"_install_detail.log","w")
end
end
#創建文件夾/result/image/
def url()
begin
wait do
FileUtils.makedirs(Dir.pwd+"/result/image/")
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"創建文件夾異常!#{ex.message}"
end
end
#獲取當前路徑
def file()
begin
wait do
Dir.pwd
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"當前路徑異常!#{ex.message}"
end
end
#點擊ID
def ClickByID(id)
begin
wait do
find_element(:id,id).click
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"#{id}異常!#{ex.messge}"
end
end
#截圖
def TakeTakesScreenshot()
begin
url()
wait do
dr = screenshot(Dir.pwd+"/result/image/"+ Time.now.strftime("%Y%m%d %H%M%S")+‘.jpg‘)
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"#{}異常!#{ex.message}"
end
end
#通過用戶名點擊
def ClickByName(name)
begin
wait do
find_element(:name,name).click
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"#{name}異常!#{ex.message}"
end
end
#通過name輸入name鍵入文字
def SendByName(name,content)
begin
wait do
find_element(:name,name).send_keys content
end
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"#{name}異常!#{ex.message}"
end
#通過id輸入id鍵入文字
def SendByID(id,content)
begin
wait do
find_element(:id,id).send_keys content
end
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"#{id}異常!#{ex.message}"
end
#新版本更新窗口彈出,點擊稍後更新按鈕
def WaitForNew(content,name)
begin
# wait for alert to show
wait do
text content
find(name).click
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"#{name}異常!#{ex.message}"
end
end
def LongPressClick(name)
begin
wait do
e = find_element(:name, name)
Appium::TouchAction.new.long_press(element: e, x: 0.5, y: 0.5).release(element: e).perform
end
rescue =>ex
raise Exception,"#{name}異常!#{ex.message}"
end
end
#執行下滑動作
def SwipeDown(num)
begin
for i in 0..num
wait do
swipe :start_x => 0.5, :start_y => 0.25, :end_x => 0.5, :end_y => 0.75, :duration => 500
end
end
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"#{num}異常!#{ex.message}"
end
#執行上滑動作
def SwipeUp(num)
begin
for i in 0..num
wait do
swipe :start_x => 0.5, :start_y => 0.75, :end_x => 0.5, :end_y => 0.25, :duration => 500
end
end
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"#{num}異常!#{ex.message}"
end
#執行左滑動作
def SwipeLeft(num)
begin
for i in 1..num
wait do
swipe :start_x => 0.75, :start_y => 0.5, :end_x => 0.25, :end_y => 0.5, :duration => 500
end
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"#{num}異常!#{ex.message}"
end
end
#執行右滑動作
def SwipeRight(num)
begin
for i in 0..num
wait do
swipe :start_x => 0.25, :start_y => 0.5, :end_x => 0.75, :end_y => 0.5, :duration => 500
end
end
end
rescue =>ex
TakeTakesScreenshot()
raise Exception,"#{num}異常!#{ex.message}"
end
#結束當前運行
def Quit()
wait do
driver_quit
end
end
Logdelete()
ClickByID("btn_login")
loginfo("點擊登錄按鈕成功")
SendByID("et_username","yk1234567")
loginfo("輸入用戶名成功")
SendByID("et_password","yk123456")
loginfo("輸入密碼成功")
ClickByID("btn_login")
loginfo("點擊登錄按鈕成功")
WaitForNew(‘新版本更新‘,‘稍後更新‘)
loginfo("點擊新版本更新按鈕成功")
loginfo("點擊稍後更新按鈕成功")
SwipeLeft(1)
loginfo("滑屏兩次成功")
LongPressClick(‘appium‘)
loginfo("長按成功")
TakeTakesScreenshot()
loginfo("截圖成功")
Quit()

Ruby+appium實現截圖、滑屏、長按、日誌輸出到本地文件夾