

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Acesso remoto no AWS Device Farm
<a name="remote-access"></a>

 O acesso remoto permite que você deslize o dedo, faça gestos e interaja com um dispositivo por meio de um navegador da web em tempo real para testar a funcionalidade e reproduzir os problemas dos clientes. Você interage com um dispositivo específico criando uma sessão de acesso remoto com esse dispositivo.

Uma sessão no Device Farm é uma interação em tempo real com um dispositivo físico real hospedado em um navegador da web. Uma sessão exibe o dispositivo específico que você selecionou ao iniciar a sessão. Um usuário pode iniciar mais de uma sessão por vez, mas o número total de dispositivos simultâneos está restrito ao número de slots para dispositivo que você tem. Você pode comprar slots de dispositivos com base na família de dispositivos (dispositivos Android ou iOS). Para obter mais informações, consulte [Definição de preço do Device Farm](https://aws.amazon.com/device-farm/pricing/). 

Atualmente, o Device Farm oferece um subconjunto de dispositivos para testes de acesso remoto. Novos dispositivos são adicionados ao grupo de dispositivos sempre.

O Device Farm captura vídeo de cada sessão de acesso remoto e gera logs de atividade durante a sessão. Esses resultados incluem todas as informações que você fornece durante uma sessão.

**nota**  
Por motivos de segurança, recomendamos evitar fornecer ou inserir informações confidenciais, como números de conta, informações pessoais de login e outros detalhes durante uma sessão de acesso remoto. Se possível, use alternativas desenvolvidas especificamente para testes, como contas de teste.

**Topics**
+ [Criar uma sessão de acesso remoto no AWS Device Farm](how-to-create-session.md)
+ [Usar uma sessão de acesso remoto no AWS Device Farm](how-to-use-session.md)
+ [Recuperar os resultados de uma sessão de acesso remoto no AWS Device Farm](how-to-access-session-results.md)

# Criar uma sessão de acesso remoto no AWS Device Farm
<a name="how-to-create-session"></a>

Para obter informações sobre sessões de acesso remoto, consulte [Sessões](sessions.md).
+ [Pré-requisitos](#how-to-create-session-prerequisites)
+ [Crie uma sessão remota](#how-to-create-remote-session)
+ [Próximas etapas](#how-to-create-session-next-steps)

## Pré-requisitos
<a name="how-to-create-session-prerequisites"></a>
+ Crie um projeto no Device Farm. Siga as instruções em [Criar um projeto no AWS Device Farm](how-to-create-project.md) e retorne para esta página.

## Crie uma sessão remota
<a name="how-to-create-remote-session"></a>

------
#### [ Console ]

1. Faça login no console do Device Farm em [https://console.aws.amazon.com/devicefarm.](https://console.aws.amazon.com/devicefarm)

1. No painel de navegação do Device Farm, escolha **Teste para dispositivos móveis** e, em seguida, **Projetos**.

1. Se você já tiver um projeto, selecione-o na lista. Caso contrário, crie um projeto seguindo as instruções em [Criar um projeto no AWS Device Farm](how-to-create-project.md).

1. Na guia **Acesso remoto**, escolha **Criar sessão de acesso remoto**.

1. Escolha um dispositivo para sua sessão. Você pode escolher na lista de dispositivos disponíveis ou pesquisar um dispositivo usando a barra de pesquisa na parte superior da lista.

1. *(Opcional)* Inclua um aplicativo e aplicativos auxiliares como parte da sessão. Eles podem ser aplicativos recém-carregados ou aplicativos enviados anteriormente neste projeto nos últimos 30 dias (após 30 dias, os uploads de aplicativos [expirarão](data-protection.md#data-protection-retention)).

1. Em **Session name (Nome da sessão)**, insira um nome para a sessão.

1. Escolha **Confirm and start session (Confirmar e iniciar sessão)**.

------
#### [ AWS CLI ]

*Observação: essas instruções se concentram somente na criação de uma sessão de acesso remoto. Para obter instruções sobre como fazer upload de um aplicativo para uso durante sua sessão, consulte Como [automatizar o upload de aplicativos](api-ref.md#upload-example).*

Primeiro, verifique se sua versão da AWS CLI é [baixando e up-to-date instalando a versão mais recente](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

**Importante**  
Alguns comandos mencionados neste documento não estão disponíveis em versões mais antigas da AWS CLI.

Em seguida, você pode determinar em qual dispositivo você gostaria de testar:

```
$ aws devicefarm list-devices
```

Isso mostrará uma saída como a seguinte:

```
{
    "devices":
    [
        {
            "arn": "arn:aws:devicefarm:us-west-2::device:DE5BD47FF3BD42C3A14BF7A6EFB1BFE7",
            "name": "Google Pixel 8",
            "remoteAccessEnabled": true,
            "availability": "HIGHLY_AVAILABLE"
            ...
        },
        ...
    ]
}
```

Em seguida, você pode criar sua sessão de acesso remoto com um ARN de dispositivo de sua escolha:

```
$ aws devicefarm create-remote-access-session \
  --project-arn arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef \
  --device-arn arn:aws:devicefarm:us-west-2::device:DE5BD47FF3BD42C3A14BF7A6EFB1BFE7 \
  --app-arn arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef \
  --configuration '{
      "auxiliaryApps": [
          "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
          "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1"
      ]
  }'
```

Isso mostrará uma saída como a seguinte:

```
{
    "remoteAccessSession": {
        "arn": "arn:aws:devicefarm:us-west-2:111122223333:session:abcdef123456-1234-5678-abcd-abcdef123456/abcdef123456-1234-5678-abcd-abcdef123456/00000",
        "name": "Google Pixel 8",
        "status": "PENDING",
        ...
}
```

Agora, opcionalmente, podemos fazer uma pesquisa e esperar que a sessão esteja pronta:

```
$ POLL_INTERVAL=3
TIMEOUT=600
DEADLINE=$(( $(date +%s) + TIMEOUT ))

while [[ "$(date +%s)" -lt "$DEADLINE" ]]; do

  STATUS=$(aws devicefarm get-remote-access-session \
    --arn "$DEVICE_FARM_SESSION_ARN" \
    --query 'remoteAccessSession.status' \
    --output text)

  case "$STATUS" in
    RUNNING)
      echo "Session is ready with status: $STATUS"
      break
      ;;
    STOPPING|COMPLETED)
      echo "Session ended early with status: $STATUS"
      exit 1
      ;;
  esac

done
```

------
#### [ Python ]

*Observação: essas instruções se concentram somente na criação de uma sessão de acesso remoto. Para obter instruções sobre como fazer upload de um aplicativo para uso durante sua sessão, consulte Como [automatizar o upload de aplicativos](api-ref.md#upload-example).*

Este exemplo primeiro encontra qualquer dispositivo Google Pixel disponível no Device Farm, depois cria uma sessão de acesso remoto com ele e espera até que a sessão seja executada.

```
import random
import time
import boto3

client = boto3.client("devicefarm", region_name="us-west-2")

# 1) Gather all matching devices via paginated ListDevices with filters
filters = [
    {"attribute": "MODEL",        "operator": "CONTAINS", "values": ["Pixel"]},
    {"attribute": "AVAILABILITY", "operator": "EQUALS",   "values": ["AVAILABLE"]},
]

matching_arns = []
next_token = None
while True:
    args = {"filters": filters}
    if next_token:
        args["nextToken"] = next_token
    page = client.list_devices(**args)
    for d in page.get("devices", []):
        matching_arns.append(d["arn"])
    next_token = page.get("nextToken")
    if not next_token:
        break

if not matching_arns:
    raise RuntimeError("No available Google Pixel device found.")

# Randomly select one device from the full matching set
device_arn = random.choice(matching_arns)
print("Selected device ARN:", device_arn)

# 2) Create remote access session and wait until RUNNING
resp = client.create_remote_access_session(
    projectArn="arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
    deviceArn=device_arn,
    appArn="arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef",  # optional
    configuration={
        "auxiliaryApps": [  # optional
            "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
            "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1",
        ]
    },
)

session_arn = resp["remoteAccessSession"]["arn"]
print(f"Created Remote Access Session: {session_arn}")

poll_interval = 3
timeout = 600
deadline = time.time() + timeout
terminal_states = ["STOPPING", "COMPLETED"]

while True:
    out = client.get_remote_access_session(arn=session_arn)
    status = out["remoteAccessSession"]["status"]
    print(f"Current status: {status}")

    if status == "RUNNING":
        print(f"Session is ready with status: {status}")
        break
    if status in terminal_states:
        raise RuntimeError(f"Session ended early with status: {status}")
    if time.time() >= deadline:
        raise RuntimeError("Timed out waiting for session to be ready.")
    time.sleep(poll_interval)
```

------
#### [ Java ]

*Observação: essas instruções se concentram somente na criação de uma sessão de acesso remoto. Para obter instruções sobre como fazer upload de um aplicativo para uso durante sua sessão, consulte Como [automatizar o upload de aplicativos](api-ref.md#upload-example).*

*Observação: este exemplo usa o AWS SDK for Java v2 e é compatível com as versões 11 e superiores do JDK.*

Este exemplo primeiro encontra qualquer dispositivo Google Pixel disponível no Device Farm, depois cria uma sessão de acesso remoto com ele e espera até que a sessão seja executada.

```
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.devicefarm.DeviceFarmClient;
import software.amazon.awssdk.services.devicefarm.model.CreateRemoteAccessSessionConfiguration;
import software.amazon.awssdk.services.devicefarm.model.CreateRemoteAccessSessionRequest;
import software.amazon.awssdk.services.devicefarm.model.CreateRemoteAccessSessionResponse;
import software.amazon.awssdk.services.devicefarm.model.Device;
import software.amazon.awssdk.services.devicefarm.model.DeviceFilter;
import software.amazon.awssdk.services.devicefarm.model.DeviceFilterAttribute;
import software.amazon.awssdk.services.devicefarm.model.GetRemoteAccessSessionRequest;
import software.amazon.awssdk.services.devicefarm.model.GetRemoteAccessSessionResponse;
import software.amazon.awssdk.services.devicefarm.model.ListDevicesRequest;
import software.amazon.awssdk.services.devicefarm.model.ListDevicesResponse;
import software.amazon.awssdk.services.devicefarm.model.RuleOperator;

public class CreateRemoteAccessSession {
  public static void main(String[] args) throws Exception {
    DeviceFarmClient client = DeviceFarmClient.builder()
        .region(Region.US_WEST_2)
        .build();

    String projectArn = "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef";
    String appArn     = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef";
    String aux1       = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0";
    String aux2       = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1";

    // 1) Gather all matching devices via paginated ListDevices with filters
    List<DeviceFilter> filters = Arrays.asList(
        DeviceFilter.builder()
            .attribute(DeviceFilterAttribute.MODEL)
            .operator(RuleOperator.CONTAINS)
            .values("Pixel")
            .build(),
        DeviceFilter.builder()
            .attribute(DeviceFilterAttribute.AVAILABILITY)
            .operator(RuleOperator.EQUALS)
            .values("AVAILABLE")
            .build()
    );

    List<String> matchingDeviceArns = new ArrayList<>();
    String next = null;
    do {
      ListDevicesResponse page = client.listDevices(
          ListDevicesRequest.builder().filters(filters).nextToken(next).build());
      for (Device d : page.devices()) {
        matchingDeviceArns.add(d.arn());
      }
      next = page.nextToken();
    } while (next != null);

    if (matchingDeviceArns.isEmpty()) {
      throw new RuntimeException("No available Google Pixel device found.");
    }

    // Randomly select one device from the full matching set
    String deviceArn = matchingDeviceArns.get(
        ThreadLocalRandom.current().nextInt(matchingDeviceArns.size()));
    System.out.println("Selected device ARN: " + deviceArn);

    // 2) Create Remote Access session and wait until it is RUNNING
    CreateRemoteAccessSessionConfiguration cfg = CreateRemoteAccessSessionConfiguration.builder()
        .auxiliaryApps(Arrays.asList(aux1, aux2))
        .build();

    CreateRemoteAccessSessionResponse res = client.createRemoteAccessSession(
        CreateRemoteAccessSessionRequest.builder()
            .projectArn(projectArn)
            .deviceArn(deviceArn)
            .appArn(appArn)       // optional
            .configuration(cfg)   // optional
            .build());

    String sessionArn = res.remoteAccessSession().arn();
    System.out.println("Created Remote Access Session: " + sessionArn);

    int pollIntervalMs = 3000;
    long timeoutMs = 600_000L;
    long deadline = System.currentTimeMillis() + timeoutMs;

    while (true) {
      GetRemoteAccessSessionResponse get = client.getRemoteAccessSession(
          GetRemoteAccessSessionRequest.builder().arn(sessionArn).build());
      String status = get.remoteAccessSession().statusAsString();
      System.out.println("Current status: " + status);

      if ("RUNNING".equals(status)) {
        System.out.println("Session is ready with status: " + status);
        break;
      }
      if ("STOPPING".equals(status) || "COMPLETED".equals(status)) {
        throw new RuntimeException("Session ended early with status: " + status);
      }
      if (System.currentTimeMillis() >= deadline) {
        throw new RuntimeException("Timed out waiting for session to be ready.");
      }
      Thread.sleep(pollIntervalMs);
    }
  }
}
```

------
#### [ JavaScript ]

*Observação: essas instruções se concentram somente na criação de uma sessão de acesso remoto. Para obter instruções sobre como fazer upload de um aplicativo para uso durante sua sessão, consulte Como [automatizar o upload de aplicativos](api-ref.md#upload-example).*

*Observação: este exemplo usa o AWS SDK para JavaScript v3.*

Este exemplo primeiro encontra qualquer dispositivo Google Pixel disponível no Device Farm, depois cria uma sessão de acesso remoto com ele e espera até que a sessão seja executada.

```
import {
  DeviceFarmClient,
  ListDevicesCommand,
  CreateRemoteAccessSessionCommand,
  GetRemoteAccessSessionCommand,
} from "@aws-sdk/client-device-farm";

const client = new DeviceFarmClient({ region: "us-west-2" });

// 1) Gather all matching devices via paginated ListDevices with filters
const filters = [
  { attribute: "MODEL",        operator: "CONTAINS", values: ["Pixel"] },
  { attribute: "AVAILABILITY", operator: "EQUALS",   values: ["AVAILABLE"] },
];

let nextToken;
const matching = [];

while (true) {
  const page = await client.send(new ListDevicesCommand({ filters, nextToken }));
  for (const d of page.devices ?? []) {
    matching.push(d.arn);
  }
  nextToken = page.nextToken;
  if (!nextToken) break;
}

if (matching.length === 0) {
  throw new Error("No available Google Pixel device found.");
}

// Randomly select one device from the full matching set
const deviceArn = matching[Math.floor(Math.random() * matching.length)];
console.log("Selected device ARN:", deviceArn);

// 2) Create remote access session and wait until RUNNING
const out = await client.send(new CreateRemoteAccessSessionCommand({
  projectArn: "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
  deviceArn,
  appArn: "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef", // optional
  configuration: {
    auxiliaryApps: [ // optional
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1",
    ],
  },
}));

const sessionArn = out.remoteAccessSession?.arn;
console.log("Created Remote Access Session:", sessionArn);

const pollIntervalMs = 3000;
const timeoutMs = 600000;
const deadline = Date.now() + timeoutMs;

while (true) {
  const get = await client.send(new GetRemoteAccessSessionCommand({ arn: sessionArn }));
  const status = get.remoteAccessSession?.status;
  console.log("Current status:", status);

  if (status === "RUNNING") {
    console.log("Session is ready with status:", status);
    break;
  }
  if (status === "STOPPING" || status === "COMPLETED") {
    throw new Error(`Session ended early with status: ${status}`);
  }
  if (Date.now() >= deadline) {
    throw new Error("Timed out waiting for session to be ready.");
  }
  await new Promise((r) => setTimeout(r, pollIntervalMs));
}
```

------
#### [ C\$1 ]

*Observação: essas instruções se concentram somente na criação de uma sessão de acesso remoto. Para obter instruções sobre como fazer upload de um aplicativo para uso durante sua sessão, consulte Como [automatizar o upload de aplicativos](api-ref.md#upload-example).*

Este exemplo primeiro encontra qualquer dispositivo Google Pixel disponível no Device Farm, depois cria uma sessão de acesso remoto com ele e espera até que a sessão seja executada.

```
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Amazon;
using Amazon.DeviceFarm;
using Amazon.DeviceFarm.Model;

class Program
{
    static async Task Main()
    {
        var client = new AmazonDeviceFarmClient(RegionEndpoint.USWest2);

        // 1) Gather all matching devices via paginated ListDevices with filters
        var filters = new List<DeviceFilter>
        {
            new DeviceFilter { Attribute = DeviceAttribute.MODEL,        Operator = RuleOperator.CONTAINS, Values = new List<string>{ "Pixel" } },
            new DeviceFilter { Attribute = DeviceAttribute.AVAILABILITY, Operator = RuleOperator.EQUALS,   Values = new List<string>{ "AVAILABLE" } },
        };

        var matchingArns = new List<string>();
        string nextToken = null;

        do
        {
            var list = await client.ListDevicesAsync(new ListDevicesRequest
            {
                Filters = filters,
                NextToken = nextToken
            });

            foreach (var d in list.Devices)
                matchingArns.Add(d.Arn);

            nextToken = list.NextToken;
        }
        while (nextToken != null);

        if (matchingArns.Count == 0)
            throw new Exception("No available Google Pixel device found.");

        // Randomly select one device from the full matching set
        var rnd = new Random();
        var deviceArn = matchingArns[rnd.Next(matchingArns.Count)];
        Console.WriteLine($"Selected device ARN: {deviceArn}");

        // 2) Create remote access session and wait until RUNNING
        var request = new CreateRemoteAccessSessionRequest
        {
            ProjectArn = "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
            DeviceArn  = deviceArn,
            AppArn     = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef", // optional
            Configuration = new CreateRemoteAccessSessionConfiguration
            {
                AuxiliaryApps = new List<string>
                {
                    "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
                    "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1"
                }
            }
        };

        request.Configuration.AuxiliaryApps.RemoveAll(string.IsNullOrWhiteSpace);

        var response = await client.CreateRemoteAccessSessionAsync(request);
        var sessionArn = response.RemoteAccessSession.Arn;
        Console.WriteLine($"Created Remote Access Session: {sessionArn}");

        var pollIntervalMs = 3000;
        var timeoutMs = 600000;
        var deadline = DateTime.UtcNow.AddMilliseconds(timeoutMs);

        while (true)
        {
            var get = await client.GetRemoteAccessSessionAsync(new GetRemoteAccessSessionRequest { Arn = sessionArn });
            var status = get.RemoteAccessSession.Status.Value;
            Console.WriteLine($"Current status: {status}");

            if (status == "RUNNING")
            {
                Console.WriteLine($"Session is ready with status: {status}");
                break;
            }
            if (status == "STOPPING" || status == "COMPLETED")
            {
                throw new Exception($"Session ended early with status: {status}");
            }
            if (DateTime.UtcNow >= deadline)
            {
                throw new TimeoutException("Timed out waiting for session to be ready.");
            }

            await Task.Delay(pollIntervalMs);
        }
    }
}
```

------
#### [ Ruby ]

*Observação: essas instruções se concentram somente na criação de uma sessão de acesso remoto. Para obter instruções sobre como fazer upload de um aplicativo para uso durante sua sessão, consulte Como [automatizar o upload de aplicativos](api-ref.md#upload-example).*

Este exemplo primeiro encontra qualquer dispositivo Google Pixel disponível no Device Farm, depois cria uma sessão de acesso remoto com ele e espera até que a sessão seja executada.

```
require 'aws-sdk-devicefarm'

client = Aws::DeviceFarm::Client.new(region: 'us-west-2')

# 1) Gather all matching devices via paginated ListDevices with filters
filters = [
  { attribute: 'MODEL',        operator: 'CONTAINS', values: ['Pixel'] },
  { attribute: 'AVAILABILITY', operator: 'EQUALS',   values: ['AVAILABLE'] },
]

matching_arns = []
next_token = nil
loop do
  resp = client.list_devices(filters: filters, next_token: next_token)
  resp.devices&.each { |d| matching_arns << d.arn }
  next_token = resp.next_token
  break unless next_token
end

abort "No available Google Pixel device found." if matching_arns.empty?

# Randomly select one device from the full matching set
device_arn = matching_arns.sample
puts "Selected device ARN: #{device_arn}"

# 2) Create remote access session and wait until RUNNING
resp = client.create_remote_access_session(
  project_arn: "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
  device_arn:  device_arn,
  app_arn:     "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef", # optional
  configuration: {
    auxiliary_apps: [ # optional
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1"
    ].compact
  }
)

session_arn = resp.remote_access_session.arn
puts "Created Remote Access Session: #{session_arn}"

poll_interval = 3
timeout = 600
deadline = Time.now + timeout
terminal = %w[STOPPING COMPLETED]

loop do
  get = client.get_remote_access_session(arn: session_arn)
  status = get.remote_access_session.status
  puts "Current status: #{status}"

  if status == 'RUNNING'
    puts "Session is ready with status: #{status}"
    break
  end

  abort "Session ended early with status: #{status}" if terminal.include?(status)
  abort "Timed out waiting for session to be ready." if Time.now >= deadline
  sleep poll_interval
end
```

------

## Próximas etapas
<a name="how-to-create-session-next-steps"></a>

O Device Farm inicia a sessão assim que o dispositivo e a infraestrutura solicitados estão disponíveis, normalmente em alguns minutos. A caixa de diálogo **Dispositivo solicitado** ficará aberta até o momento em que a sessão iniciar. Para cancelar a solicitação de sessão, escolha **Cancel request (Cancelar solicitação)**. 

Se o dispositivo selecionado estiver indisponível ou ocupado, o status da sessão será exibido como **Dispositivo pendente**, indicando que talvez seja necessário aguardar algum tempo até que o dispositivo esteja disponível para teste.

**Se sua conta atingiu o limite de simultaneidade para dispositivos públicos com ou sem medição, o status da sessão será exibido como Simultaneidade pendente.** Para slots de dispositivos ilimitados, você pode aumentar a simultaneidade [comprando mais](how-to-purchase-device-slots.md) slots de dispositivos. Para pay-as-you-go dispositivos medidos, entre em contato com a AWS por meio de um ticket de suporte para solicitar [um aumento na cota de serviço](limits.md).

Quando a configuração da sessão começa, ela mostra primeiro um status de Em **andamento** e, em seguida, um status de **Conexão** enquanto seu navegador local tenta abrir uma conexão remota com o dispositivo.

Depois que a sessão for iniciada, se tiver que fechar o navegador ou a guia do navegador sem interromper a sessão ou se a conexão entre o navegador e a internet se perder, a sessão permanecerá ativa por cinco minutos. Depois disso, o Device Farm encerra a sessão. A conta é cobrada pelo tempo ocioso. 

Após o início da sessão, você pode interagir com o dispositivo no navegador da web ou testar o dispositivo usando o [Appium](appium-endpoint.md).

# Usar uma sessão de acesso remoto no AWS Device Farm
<a name="how-to-use-session"></a>

Para obter informações sobre como executar testes interativos de aplicativos Android e iOS por meio de sessões de acesso remoto, consulte [Sessões](sessions.md).
+ [Pré-requisitos](#how-to-use-session-prerequisites)
+ [Use uma sessão no console do Device Farm](#how-to-use-session-console)
+ [Próximas etapas](#how-to-use-session-next-steps)
+ [Dicas e truques](#how-to-use-session-tips)

## Pré-requisitos
<a name="how-to-use-session-prerequisites"></a>
+ Crie uma sessão. Siga as instruções em [Criar uma sessão](how-to-create-session.md) e retorne para esta página.

## Use uma sessão no console do Device Farm
<a name="how-to-use-session-console"></a>

Assim que o dispositivo que você solicitou para uma sessão de acesso remoto ficar disponível, o console exibirá a tela do dispositivo. A sessão tem duração máxima de 150 minutos. O tempo restante na sessão aparece no campo **Tempo restante** próximo ao nome do dispositivo.

### Instalar um aplicativo
<a name="how-to-use-session-install-app"></a>

Para instalar uma aplicação no dispositivo de sessão, em **Instalar aplicações**, selecione **Escolher arquivo** e escolha o arquivo .apk (Android) ou o arquivo .ipa (iOS) que você deseja instalar. Os aplicativos que você executa em uma sessão de acesso remoto não exigem nenhum teste de instrumentação nem provisionamento.

**nota**  
Ao fazer upload de um aplicativo, às vezes o aplicativo demora um pouco para ficar disponível. Uma mensagem de confirmação aparecerá informando se o aplicativo foi instalado com sucesso ou não.

### Controlar o dispositivo
<a name="how-to-use-session-control-device"></a>

Você pode interagir com o dispositivo exibido no console assim como faria com um dispositivo físico real, usando o mouse ou um dispositivo semelhante para tocar e o teclado na tela do dispositivo. Para dispositivos Android, existem botões em **View controls (Visualizar controles)** que funcionam como os botões **Home (Início)** e **Back (Voltar)** em um dispositivo Android. Para dispositivos iOS, existe um botão **Home (Início)** que funciona da mesma forma que o botão de início em um dispositivo iOS. Você também pode alternar aplicações executadas no dispositivo escolhendo **Aplicações recentes**.

### Alternar modos retrato e paisagem
<a name="how-to-use-session-switch-between-portrait-landscape-mode"></a>

Você também pode alternar os modos retrato (vertical) e paisagem (horizontal) nos dispositivos que está usando. 

## Próximas etapas
<a name="how-to-use-session-next-steps"></a>

O Device Farm continua a sessão até que você a interrompa manualmente ou até que o limite de tempo de 150 minutos seja atingido. Para encerrar a sessão, escolha o botão **Interromper sessão**. Depois que a sessão for interrompida, você poderá acessar o vídeo que foi capturado e os logs que foram gerados. Para obter mais informações, consulte [Recuperando os resultados da sessão](how-to-access-session-results.md).

## Dicas e truques
<a name="how-to-use-session-tips"></a>

Você pode ter problemas de desempenho com a sessão de acesso remoto em algumas AWS regiões. Em parte, isso se deve à latência em algumas regiões. Se tiver problemas de desempenho, permita que a sessão de acesso remota recupere o atraso para então interagir novamente com o aplicativo.

# Recuperar os resultados de uma sessão de acesso remoto no AWS Device Farm
<a name="how-to-access-session-results"></a>

Para obter informações sobre sessões, consulte [Sessões](sessions.md).
+ [Pré-requisitos](#how-to-access-session-results-prerequisites)
+ [Visualização de detalhes da sessão](#how-to-view-session-details)
+ [Download de vídeo ou logs de sessão](#how-to-access-session-files)

## Pré-requisitos
<a name="how-to-access-session-results-prerequisites"></a>
+ Conclua uma sessão. Siga as instruções em [Usar uma sessão de acesso remoto no AWS Device FarmUsar uma sessão](how-to-use-session.md) e retorne para esta página.

## Visualização de detalhes da sessão
<a name="how-to-view-session-details"></a>

Quando uma sessão de acesso remoto termina, o console do Device Farm exibe uma tabela que contém detalhes sobre a atividade durante a sessão. Para obter mais informações, consulte [Analisar informações do log](how-to-use-reports.md#how-to-use-reports-console-log).

Para retornar aos detalhes de uma sessão em um momento posterior:

1. No painel de navegação do Device Farm, escolha **Teste para dispositivos móveis** e, em seguida, **Projetos**.

1. Escolha o projeto que contém a sessão.

1. Selecione **Acesso remoto** e escolha a sessão que você deseja revisar na lista.

## Download de vídeo ou logs de sessão
<a name="how-to-access-session-files"></a>

Quando uma sessão de acesso remoto termina, o console do Device Farm fornece acesso a uma captura de vídeo da sessão e aos logs de atividade. Nos resultados da sessão, escolha a guia **Files (Arquivos)** para obter uma lista de links para o vídeo e os logs da sessão. Você pode visualizar esses arquivos no navegador ou os salvar localmente.