当前位置: 首页 > 后端技术 > Java

使用ABAP控制Android本机应用

时间:2023-04-01 14:06:32 Java

如何使用ABAP控制本机Android应用业务流程不再只能在SAPGUIforWindows中使用。也越来越多地在其他设备上的其他用户界面上采取行动。在这篇博文中,我描述了如何通过PowerShell使用ABAP来控制虚拟Android设备上的本机应用程序和Web应用程序的可能性。为了实现这个场景,我们使用了这篇文章和这篇文章中描述的方法。SAP系统和虚拟设备之间的桥梁构建了一系列库和应用程序。它从SAPIEN的ActiveXPoshV3库开始,用于从SAP连接PowerShell。包含过程的PowerShell脚本作为包含开发对象存储在SAP后端系统上。ABAP报告加载此脚本并执行它。该脚本使用Appium客户端库连接到从AndroidStudio连接到虚拟设备的Appium服务器。这是一个用于控制Android计算器应用程序的PowerShell脚本。将其存储在您的SAP系统中。它加载客户端库,设置必要的功能,如设备名称、应用程序等,并执行一些活动。它将6加到9,将166乘以9,然后将结果写入屏幕。#-开始------------------------------------------#-包括----------------------------------------------------------$Path="C:\ProgramFiles\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")[无效][System.Reflection.Assembly]::LoadFrom($Path+"\WebDriver.dll")[无效][System.Reflection.Assembly]::LoadFrom($Path+"\WebDriver.Support.dll")#-SubMain----------------------------------------------------------函数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);如果($Driver-eq$null){返回;}$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();$德里ver.FindElementById("com.android.calculator2:id/eq").Click();$Result=$Driver.FindElementById("com.android.calculator2:id/result").Text;写入主机“DasErgebnisist”$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;写入主机“DasErgebnisist”$Result;$Driver.CloseApp();$Driver.Quit();}#-主要的-----------------------------------------Main#-End----------------------------------------------------------------这是一个脚本,用于控制Android上的Chrome浏览器存储它作为包含在您的SAP系统中。它和上面的脚本一样,但是这里我们控制浏览器。我们调用Google搜索,在字段中输入单词Selenium,然后按Enter。#-开始------------------------------------------#-包括----------------------------------------------------------$Path="C:\ProgramFiles\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")[无效][System.Reflection.Assembly]::LoadFrom($Path+"\WebDriver.dll")[无效][System.Reflection.Assembly]::LoadFrom($Path+"\WebDriver.Support.dll")#-SubMain----------------------------------------------------------函数Main(){[OpenQA.Selenium.Remote.DesiredCapabilities]$Capabilities=`[OpenQA.Selenium.Remote.DesiredCapabilities]::new();$Capabilities.SetCapability("deviceName","emulator-5554");$Capabilities.SetCapability("platformVersion","8.1.0");$Capabilities.SetCapability("浏览器名称","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){返回;}$Driver.Navigate().GoToUrl("https://www.google.de");$Driver.FindElementByName("q").SendKeys("Selenium");$Driver.FindElementByName("q").SendKeys([OpenQA.Selenium.Keys]::Enter);Start-Sleep-Seconds5$Driver.CloseApp();$Driver.Quit();}#-Main-----------------------------------------------------------Main#-End------------------------------------------------------------------ABAP代码准备和执行要使用以下报告执行这些脚本,您需要SAP系统中此处的zActiveXPoshV3类此报告加载包含z_posh_appium_app并执行它。但在使用新的空项目和虚拟设备启动AndroidStudio之前。然后启动您的Appium服务器。报告源码:"-Begin--------------------------------------------------------------报告Z_APPIUM.DATA:lo_posh类型参考zactivexposhv3,lv_pscode类型字符串,lv_result类型字符串,lt_result类型标准字符串表。创建对象lo_posh.CHECKlo_posh->load_lib()=lo_posh->mc_true.CHECKlo_posh->get_is_powershell_installed()=lo_posh->mc_true.CHECKlo_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).LOOPATlt_resultINTOlv_result.WRITE:/lv_result.ENDLOOP.lo_posh->free_lib()."-结束---------------------------------------------------------------执行结果:结论如您所见,Android设备可以从SAP进行控制您可以通过脚本和ABAP报表、功能模块或方法之间的直接双向通信来同步完成。所以你可以在测试期间使用这种方法,例如在eCATT的上下文中。这为非常有趣的集成场景打开了大门。更多Jerry原创文章在这里:《王子熙》: