共计 5959 个字符,预计需要花费 15 分钟才能阅读完成。
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 的原创文章,尽在:” 汪子熙 ”: