使用 ABAP 控制 Android 原生应用
How to Control Native Android Apps with ABAP
業務流程不再僅在適用于 Windows 的 SAP GUI 中實現。 在其他設備上的其他 UI 上也越來越多地采取措施。 在這篇博文中,我描述了如何通過 PowerShell 使用 ABAP 在虛擬 Android 設備上控制本機應用程序和 Web 應用程序的可能性。
為了實現這個場景,我們使用這篇文章和這篇文章描述的方法。 SAP 系統和虛擬設備之間的橋梁構建了一系列庫和應用程序。 它從 SAPIEN 的 ActiveXPoshV3 庫開始,用于從 SAP 連接 PowerShell。 包含該過程的 PowerShell 腳本作為包含開發對象存儲在 SAP 后端系統上。 ABAP 報告加載此腳本并執行它。 該腳本使用 Appium 客戶端庫連接 Appium 服務器,該服務器連接來自 Android Studio 的虛擬設備。
這里有一個 PowerShell 腳本來控制 Android 計算器應用程序。 將其存儲為包含在您的 SAP 系統中。 它加載客戶端庫,設置必要的功能,如設備名稱、應用程序等,并執行一些 activity. 它將 6 加到 9,將 166 乘以 9 并將結果寫入屏幕。
#-Begin-----------------------------------------------------------------#-Includes------------------------------------------------------------$Path = "C:\Program Files\Appium"[Void][System.Reflection.Assembly]::LoadFrom($Path + "\appium-dotnet-driver.dll")[Void][System.Reflection.Assembly]::LoadFrom($Path + "\Castle.Core.dll")[Void][System.Reflection.Assembly]::LoadFrom($Path + "\Newtonsoft.Json.dll")[Void][System.Reflection.Assembly]::LoadFrom($Path + "\WebDriver.dll")[Void][System.Reflection.Assembly]::LoadFrom($Path + "\WebDriver.Support.dll")#-Sub Main------------------------------------------------------------Function Main() {[OpenQA.Selenium.Remote.DesiredCapabilities]$Capabilities = `[OpenQA.Selenium.Remote.DesiredCapabilities]::new();$Capabilities.SetCapability([OpenQA.Selenium.Appium.Enums.MobileCapabilityType]::`DeviceName, "emulator-5554");$Capabilities.SetCapability([OpenQA.Selenium.Appium.Enums.MobileCapabilityType]::`PlatformVersion, "8.1.0");$Capabilities.SetCapability([OpenQA.Selenium.Appium.Enums.MobileCapabilityType]::`PlatformName, "Android");$Capabilities.SetCapability([OpenQA.Selenium.Appium.Enums.AndroidMobileCapabilityType]::`AppPackage, "com.android.calculator2");$Capabilities.SetCapability([OpenQA.Selenium.Appium.Enums.AndroidMobileCapabilityType]::`AppActivity, "com.android.calculator2.Calculator");[System.Uri]$Uri = [System.Uri]::new("http://127.0.0.1:4723/wd/hub");$Driver = `[OpenQA.Selenium.Appium.Android.AndroidDriver[OpenQA.Selenium.Appium.AppiumWebElement]]::`new($Uri, $Capabilities);If ($Driver -eq $null) {Return;}$Driver.FindElementById("com.android.calculator2:id/digit_9").Click();$Driver.FindElementById("com.android.calculator2:id/op_add").Click();$Driver.FindElementById("com.android.calculator2:id/digit_6").Click();$Driver.FindElementById("com.android.calculator2:id/eq").Click();$Result = $Driver.FindElementById("com.android.calculator2:id/result").Text;Write-Host "Das Ergebnis ist " $Result;$Driver.FindElementByAccessibilityId("clear").Click();$Driver.FindElementById("com.android.calculator2:id/digit_1").Click();$Driver.FindElementById("com.android.calculator2:id/digit_6").Click();$Driver.FindElementById("com.android.calculator2:id/digit_6").Click();$Driver.FindElementByAccessibilityId("multiply").Click();$Driver.FindElementById("com.android.calculator2:id/digit_9").Click();$Driver.FindElementByAccessibilityId("equals").Click();$Result = $Driver.FindElementById("com.android.calculator2:id/result").Text;Write-Host "Das Ergebnis ist " $Result;$Driver.CloseApp();$Driver.Quit();}#-Main----------------------------------------------------------------Main#-End-------------------------------------------------------------------這里有一個腳本來控制 Android 上的 Chrome 瀏覽器。 將其存儲為包含在您的 SAP 系統中。 它的作用與上面的腳本相同,但在這里我們控制瀏覽器。 我們調用 Google 搜索,在字段中輸入 Selenium 一詞,然后按 Enter。
#-Begin-----------------------------------------------------------------#-Includes------------------------------------------------------------$Path = "C:\Program Files\Appium"[Void][System.Reflection.Assembly]::LoadFrom($Path + "\appium-dotnet-driver.dll")[Void][System.Reflection.Assembly]::LoadFrom($Path + "\Castle.Core.dll")[Void][System.Reflection.Assembly]::LoadFrom($Path + "\Newtonsoft.Json.dll")[Void][System.Reflection.Assembly]::LoadFrom($Path + "\WebDriver.dll")[Void][System.Reflection.Assembly]::LoadFrom($Path + "\WebDriver.Support.dll")#-Sub Main------------------------------------------------------------Function Main() {[OpenQA.Selenium.Remote.DesiredCapabilities]$Capabilities = `[OpenQA.Selenium.Remote.DesiredCapabilities]::new();$Capabilities.SetCapability("deviceName", "emulator-5554");$Capabilities.SetCapability("platformVersion", "8.1.0");$Capabilities.SetCapability("browserName", "Chrome")$Capabilities.SetCapability("platformName", "Android");[System.Uri]$Uri = [System.Uri]::new("http://127.0.0.1:4723/wd/hub");$Driver = `[OpenQA.Selenium.Appium.Android.AndroidDriver[OpenQA.Selenium.Appium.AppiumWebElement]]::`new($Uri, $Capabilities);If ($Driver -eq $null) {Return;}$Driver.Navigate().GoToUrl("https://www.google.de");$Driver.FindElementByName("q").SendKeys("Selenium");$Driver.FindElementByName("q").SendKeys([OpenQA.Selenium.Keys]::Enter);Start-Sleep -Seconds 5$Driver.CloseApp();$Driver.Quit();}#-Main----------------------------------------------------------------Main#-End-------------------------------------------------------------------ABAP Code Preparation and Execution
要使用以下報告執行這些腳本,您需要 SAP 系統中來自此處的 zActiveXPoshV3 類。此報告加載包含 z_posh_appium_app 的第一個腳本并執行它。 但在使用新的空項目和虛擬設備啟動 Android Studio 之前。 然后啟動你的 Appium 服務器。
report 源代碼:
"-Begin----------------------------------------------------------------- REPORT Z_APPIUM.DATA:lo_posh TYPE REF TO zactivexposhv3,lv_pscode TYPE string,lv_result TYPE string,lt_result TYPE STANDARD TABLE OF string.CREATE OBJECT lo_posh. CHECK lo_posh->load_lib( ) = lo_posh->mc_true. CHECK lo_posh->get_is_powershell_installed( ) = lo_posh->mc_true. CHECK lo_posh->init( iv_load_profiles = lo_posh->mc_false ) = 0.lo_posh->set_outputmode( lo_posh->mc_outputbuffer ). lo_posh->set_outputwidth( 132 ). lo_posh->clear_output( ).lv_pscode = lo_posh->read_incl_as_string( iv_incl_name = 'Z_POSH_APPIUM_APP' ).lo_posh->execute( lv_pscode ). lv_result = lo_posh->get_outputstring( ). lo_posh->clear_output( ).lt_result = lo_posh->outputstring_to_table( iv_outputstring = lv_result ). LOOP AT lt_result INTO lv_result.WRITE: / lv_result. ENDLOOP.lo_posh->free_lib( )."-End-------------------------------------------------------------------執行結果:
結論
如您所見,可以從 SAP 控制 Android 設備。 您可以通過腳本和 ABAP 報告、功能模塊或方法之間的直接雙向通信同步進行。 所以你可以在測試過程中使用這種方法,例如 在 eCATT 的背景下。這為非常有趣的集成場景打開了大門。
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的使用 ABAP 控制 Android 原生应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP 电商云 Spartacus UI
- 下一篇: 传比亚迪将为特斯拉欧版供应电池 官方:不