在自动化测试中将数据推送到我的应用程序中

时间:2018-11-23 15:52:36

标签: android automation automated-tests

我使android应用程序自动化,并且我需要自动化工具,该工具可以将数据推送到测试中的启动活动中(通过Intent或其他方式)。我尝试了appium,但是它只能通过在清单中注册的意图动作来启动新活动。 有没有这样的工具?或者也许是其他方式做到这一点

2 个答案:

答案 0 :(得分:0)

您可以编写一个没有任何UI元素的简单Android应用/服务,从而可以通过Intent或所需的其他方式传递所需的数据。此android应用/服务的设计方式应使您可以通过adb cmds调用所需的功能。例如,您的应用程序可以连续读取文件,您可以通过adb推送该文件。定义自己的cmd并将这些cmd写入文件中。通过adb将文件推送到android设备。您的应用可以读取此文件,提取cmd并调用所需的方法以将数据共享给另一个应用。

假设SEND_DATA是定义为与另一个android应用共享数据的cmd

从PC:

queue:
  name: Hosted VS2017
  demands: npm

steps:
- task: NodeTool@0
  displayName: 'Use Node 8.x'
  inputs:
    versionSpec: 8.x


- task: Npm@1
  displayName: 'npm install angular cli'
  inputs:
    command: custom

    verbose: false

    customCommand: 'install @angular/cli -g'


- task: Npm@1
  displayName: 'npm install packages'
  inputs:
    verbose: false


- script: 'npm run build:ssr'
  displayName: 'build the project'

- task: CopyFiles@2
  displayName: 'Copy dist files to staging'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)/dist'

    TargetFolder: '$(Build.ArtifactStagingDirectory)/app/dist'


- task: CopyFiles@2
  displayName: 'Copy server.js to the root'
  inputs:
    SourceFolder: '$(Build.ArtifactStagingDirectory)/app/dist'

    Contents: server.js

    TargetFolder: '$(Build.ArtifactStagingDirectory)/app'


- task: DeleteFiles@1
  displayName: 'Delete the dist/server.js'
  inputs:
    SourceFolder: '$(Build.ArtifactStagingDirectory)/app/dist'

    Contents: server.js


- task: AzureRmWebAppDeployment@3
  displayName: 'Azure App Service Deploy: website'
  inputs:
    azureSubscription: 'Subscription 1'

    WebAppName: website

    DeployToSlotFlag: true

    ResourceGroupName: Temp

    SlotName: master

    Package: '$(Build.ArtifactStagingDirectory)/app'

    GenerateWebConfig: true

    WebConfigParameters: '-Handler iisnode -NodeStartFile server.js -appType node'

    UseWebDeploy: true

    RemoveAdditionalFilesFlag: true

从您的Android应用程序中

echo SEND_DATA > cmd.txt
adb push cmd.txt /SomewhereInAndroidDevice

答案 1 :(得分:0)

我在 BroadcastReceiver 中找到了解决方案。您可以在主活动中创建它,然后等待自定义意图,该意图是使用Appium通过ADB发送的。因此,我能够更改数据应用程序的运行时间