Ruby+appium實現截圖、滑屏、長按、日誌輸出到本地資料夾
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} #{[email protected] [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實現截圖、滑屏、長按、日誌輸出到本地文件夾
username 實例 方法 pytho 日誌 用戶名 read 清除 文件夾 require ‘rubygems‘ require ‘appium_lib‘require ‘date‘require ‘logger‘require ‘pathname‘require ‘t
Ruby+appium實現截圖、滑屏、長按、日誌輸出到本地資料夾
require 'rubygems' require 'appium_lib' require 'date' require 'logger' require 'pathname' require 'thread' require"fileutils" capa
Android Multimedia實戰(四)MediaProjection實現截圖,與MediaMuxer實現錄屏為MP4,Gif格式
MediaProjection可以用來捕捉螢幕,具體來說可以擷取當前螢幕和錄製螢幕視訊 (5.0以上) 先總結下系統是如何實現組合鍵截圖的: 都應該知道Android原始碼中對按鍵的捕獲位於檔案PhoneWindowManager.java中 當滿足按鍵
C++實現螢幕截圖(全屏截圖)
最近維護的專案,在某些情況下,光有日誌還不行,於是添加了截圖功能,特定情況下,會自動截圖,輔助分析,從而改程序序。以下是截圖實現程式碼。 void CDemoDlg::ScreenShot(void) { CWnd *pDesktop = GetDesktopWi
android視訊截圖&手機錄屏實現
問題 在android中有時候我們需要對螢幕進行截圖操作,單一的截圖操作好解決可以通過activity的頂層view DecorView獲取一個bitmap,得到就是當前activity上面的全部檢視。 View view = activity.getWindow().getDecorView();
基於Appium+java進行Android自動化測試:列表定位、用例失敗截圖、長按、滑動、依賴、切換~
一、appium中對元素的定位方法的使用 場景:元素的定位,常利用resource-id、index、name(text)等屬性進行定位。如下圖所示,列表專案的index、resource-id、class、package等屬性均相同,無法利用常用屬性進行區分。直接根據r
Appium+JAVA實現截圖功能
接觸Appium時間不長,以下是截圖方法程式碼,做個筆記備忘。 //截圖 public void test(WebDriver driver){ File screen = ((RemoteWebDriver) driver).
Android實現全域性截圖以及錄屏
廢話不多說 直接上程式碼(使用kotlin編寫大致與java差不多) 程式碼註釋也挺詳細的 利用mediaProjection 實現截圖與錄屏 mediaProjection 是android 5.
利用Selenium+PhantomJS 實現截圖
rgs 重載 public 服務器 console read using default tom using OpenQA.Selenium; using OpenQA.Selenium.PhantomJS; using System; using Syste
Java屏幕截圖工具 捕獲屏幕
資源 urn stat oid reat gets phi super border 原文:http://www.open-open.com/code/view/1420037709781 import java.awt.BorderLayout; import ja
Appium自動化--截圖
學習記錄public class Screenshot { public static void Screenshot(AndroidDriver driver,String ScreenName)throws IOException{ //設置時間格式 SimpleDate
Appium螢幕截圖
螢幕截圖用到的方法: 方法1:save_screenshot() 該方法直接儲存當前螢幕截圖到當前指令碼所在的檔案位置 示例: 指令碼: #!_*_ coding:UTF-8 _*_from find_element.capability import driver dri
分享 不用API實現截圖/擷取當前視窗內容( 抓圖 )
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Appium失敗截圖及重試機制封裝(二)
analyze ret boolean 做了 ktr assert public false fail 一、失敗截圖封裝 1、主要封裝了失敗之後的文件名、重寫了失敗之後消息、失敗了以後做個截圖,最後置為失敗,並且存放到相對路徑下、截圖操作,未把失敗用例至為Fail,主要代
使用Chrome-headless模式下,截圖不全屏的問題
在headless模式下,是沒有開啟瀏覽器視窗的,那麼driver.maximize_window(),找不到目標也打不開。 我們可以換一種方式,去在無頭模式下,指定瀏覽器的視窗大小執行即可。 __options = Options() __options.add_argum
JAVA實現截圖小Demo
閒的沒事,寫個從書上看到的一個小例子,java獲取電腦螢幕內容,類似於qq截圖吧。直接上程式碼,都有註釋比較簡單。 public class ScreenPhoto { public static void main(String[] args) throws AWTException, IO
請教picturebox截圖儲存到陣列並實現截圖拖動組合的問題
VS2017從元資料無註釋!AutodeskRevit二次開發VS2017從元資料無註釋!AutodeskRevit二次開發 net4.5選單BUGwinform製作列印net4.5選單BUGwinform製作列印 父窗體BindingNavigator導航按鈕如何操作當前活
gnome中截圖與錄屏操作
截圖與錄屏 你可以抓取當前螢幕圖片(截圖)或者錄製一個當前螢幕中操作的視訊(錄屏)。當你想要給某人演示怎樣在電腦上進行某些操作時,你可以通過截圖和錄屏來獲取圖片及視訊檔案,然後通過 email 向別人傳送這些檔案或將這些檔案共享到網路上。 截圖
Appium 螢幕截圖(交易寶)
截圖方法 方法1 save_screenshot() 該方法直接儲存當前螢幕截圖到當前指令碼所在檔案位置。 driver.save_screenshot('jiaoyibao_login.png') 方法2 get_screenshot_as_file(sel
selenium + python實現截圖並且儲存圖片的方法
在自動化測試過程中,是有必要截圖的,特別是遇到錯誤的時候進行截圖,截圖可以幫助我們直觀的定位錯誤、記錄測試步驟。。截圖對於測試人員來說應該是較為重要的一個技能。 webdriver的截圖功能十分強悍,無論頁面多長,webdriver都能比較完美的截到完整的頁面。 Webd