我使android应用程序自动化,并且我需要自动化工具,该工具可以将数据推送到测试中的启动活动中(通过Intent或其他方式)。我尝试了appium,但是它只能通过在清单中注册的意图动作来启动新活动。 有没有这样的工具?或者也许是其他方式做到这一点
答案 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发送的。因此,我能够更改数据应用程序的运行时间