> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Rode o Selenium com Chromium headless

> Automação com Selenium na Square Cloud: rode um script Python com Chromium headless e ChromeDriver, as flags que containers exigem, requirements.txt e deploy.

## Desenvolvimento profissional de scripts Selenium

Para implementar automação web eficiente na Square Cloud, é fundamental estabelecer um ambiente de desenvolvimento adequado e seguir as melhores práticas de configuração.

### Pré-requisitos

* **Python e pip**: Certifique-se de ter **Python** e **pip** instalados em seu sistema. Caso não os possua, faça o download no [site oficial do Python](https://www.python.org/) e no [site oficial do Pip](https://pypi.org/).
* **Conta na Square Cloud**: Crie sua conta através da [página de cadastro](https://squarecloud.app/pt-br/signup), utilizando seu endereço de email para registro.
* **Plano ativo**: É necessário possuir um plano ativo para garantir recursos adequados para execução de aplicações Selenium. Consulte nossos [planos disponíveis](https://squarecloud.app/pt-br/pricing) e escolha o mais adequado às suas necessidades.

### Configuração do ambiente Selenium

Com Python e pip instalados, proceda com a criação do script Selenium. Primeiro, instale a biblioteca Selenium:

```bash Terminal theme={"system"}
pip install selenium
```

Em seguida, crie um arquivo Python (por exemplo, `main.py`) e adicione o código a seguir para implementar um script Selenium básico:

```python main.py theme={"system"}
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

# Configuração de opções para o Chromium
options = Options()
options.add_argument("--headless")  # Executa em segundo plano sem interface gráfica
options.add_argument("--no-sandbox")  # Necessário em containers, onde o sandbox do Chromium não consegue iniciar
options.add_argument("--disable-dev-shm-usage")  # Supera limitações de memória compartilhada em páginas grandes

# Inicialização do driver
service = Service('/usr/bin/chromedriver')  # Caminho padrão do ChromeDriver na Square Cloud
driver = webdriver.Chrome(service=service, options=options)

# Configuração das dimensões da janela do navegador
driver.set_window_size(1920, 1080)  # Ajuste conforme necessário para sua aplicação

# Navegação para a página web
driver.get('https://www.google.com')

# Loop para captura de screenshots a cada minuto
while True:
    driver.save_screenshot('page.png')
    print("Screenshot da página salvo com sucesso.")
    time.sleep(60)  # Pausa de 60 segundos entre capturas
```

## Gerenciamento de dependências com requirements.txt

O arquivo `requirements.txt` é um componente essencial que lista todas as bibliotecas externas necessárias para seu projeto. É fundamental incluir todas as dependências utilizadas, excluindo bibliotecas nativas do Python como `random` e `datetime`. Este arquivo deve ser incluído ao submeter sua aplicação à Square Cloud.

```txt requirements.txt theme={"system"}
selenium
```

## Configuração do caminho do Chromium

Na implementação apresentada acima, não é necessário definir explicitamente o caminho do Chromium, pois o Selenium WebDriver pode localizar automaticamente o navegador quando instalado em uma localização padrão do sistema. O ChromeDriver, especificado com `Service('/usr/bin/chromedriver')`, possui conhecimento sobre onde localizar o executável do Chromium/Chrome.

### Arquitetura da Square Cloud

Na Square Cloud, o Chromium está instalado em `/usr/bin/chromium`, que é a localização padrão do sistema. Portanto, o Selenium WebDriver pode localizá-lo automaticamente através do ChromeDriver especificado. Desta forma, não há necessidade de especificar explicitamente o caminho do Chromium no código, a menos que existam razões específicas para fazê-lo, como instalações personalizadas ou configurações de ambiente diferenciadas.

## Configuração do arquivo Square Cloud

Crie um arquivo `squarecloud.app` na raiz do projeto, ao lado do `main.py`. Ele diz à Square Cloud como rodar o seu script:

```systemd squarecloud.app theme={"system"}
DISPLAY_NAME=Selenium Automation
MAIN=main.py
MEMORY=1024
VERSION=recommended
AUTORESTART=true
```

* `MEMORY` é a RAM em MB. O Chromium consome bastante memória, então dê a ele pelo menos 1024 MB e aumente se a aplicação parar com `LACK_OF_RAM`.
* `AUTORESTART=true` inicia o script de novo se ele travar. Veja [como funciona o auto restart](https://help.squarecloud.app/pt-br/article/como-usar-o-auto-restart-na-square-cloud-mdyj38/).
* Não há `SUBDOMAIN`: o script não serve páginas web.

O seu ZIP contém o `main.py`, o `requirements.txt` e o `squarecloud.app`.

<Card title="Aprenda sobre: como criar o arquivo de configuração para a Square Cloud." icon="link" href="/pt-br/getting-started/config-file">
  O arquivo squarecloud.app é um arquivo de configuração essencial que será utilizado para configurar sua aplicação na Square Cloud. Ele define nome, descrição, versão, arquivo principal, entre outras configurações fundamentais.
</Card>

## Upload do projeto para a Square Cloud

Após preparar todos os arquivos do projeto, proceda com o upload para a Square Cloud e hospede sua aplicação profissionalmente.

### Via dashboard

<Steps>
  <Step title="Acesse a página de upload">
    Acesse a [página de upload](https://squarecloud.app/pt-br/dashboard/new) e envie seu arquivo zip.
  </Step>

  <Step title="Configure seu ambiente">
    Após fazer o upload do seu arquivo zip, você precisará configurar o nome, o arquivo principal ou o ambiente de execução e outras configurações do seu projeto.\
    Se você estiver enviando um projeto web, certifique-se de selecionar "Publicação na Web" e definir um subdomínio para o seu projeto.
  </Step>

  <Step title="Faça o deploy do projeto">
    Por fim, clique no botão "Deploy" para hospedar seu projeto na Square Cloud.
    Após o deploy, você poderá monitorar o status e os registros do seu projeto no dashboard.

    <Frame>
      <img src="https://cdn.squarecloud.app/docs/articles/dashboard/uploading-pt-br.gif" alt="Enviando aplicação para a Square Cloud" style={{ borderRadius: "0.2rem" }} />
    </Frame>
  </Step>

  <Step title="Confirme que seu app está no ar">
    Seu primeiro deploy geralmente leva menos de um minuto. No [dashboard](https://squarecloud.app/pt-br/dashboard), aguarde o status da sua aplicação mudar para em execução e verifique os registros em busca de erros de inicialização.\
    Se você fez deploy de um site ou API, abra `https://<seu-subdominio>.squareweb.app` no navegador: você deve ver sua aplicação respondendo. Se você fez deploy de um bot, envie um comando para confirmar que ele está online.
    <Tip>Seu app não está iniciando? Veja o [guia de solução de problemas](/pt-br/platform/troubleshooting/app-wont-start) para as causas e correções mais comuns.</Tip>
  </Step>
</Steps>

### Via CLI

Para usar esse método, seu projeto precisa de um arquivo de configuração chamado `squarecloud.app` na raiz. Ele informa à Square Cloud como executar a sua aplicação.

<Card title="Guia do arquivo de configuração" icon="link" href="/pt-br/getting-started/config-file">
  Saiba como criar o arquivo de configuração `squarecloud.app` que define o ambiente da sua aplicação.
</Card>

<Steps>
  <Step title="Instale a CLI">
    Instale a [CLI da Square Cloud](/pt-br/cli-reference/installation). Se você já a tem, execute o mesmo comando para atualizá-la:

    <CodeGroup>
      ```bash macOS, Linux e WSL theme={"system"}
      curl -fsSL https://cli.squarecloud.app/install | bash
      ```

      ```bash Windows com npm theme={"system"}
      npm install -g @squarecloud/cli@latest
      ```
    </CodeGroup>
  </Step>

  <Step title="Faça login">
    Execute o comando abaixo. Ele abre o seu navegador: aprove o login lá e a CLI está pronta. Não há nenhuma chave de API para copiar. Para scripts e CI, veja [autenticação da CLI](/pt-br/cli-reference/authentication).

    ```bash theme={"system"}
    squarecloud auth login
    ```
  </Step>

  <Step title="Envie o seu projeto">
    Na pasta do seu projeto, execute o comando abaixo. A CLI compacta a pasta atual, deixando de fora o que o [`squarecloud.ignore`](/pt-br/getting-started/squarecloud-ignore) lista, e faz o upload:

    ```bash theme={"system"}
    squarecloud upload
    ```

    Para enviar um zip que você mesmo criou, passe-o com `--file`:

    ```bash theme={"system"}
    squarecloud upload --file <caminho/para/zip>
    ```
  </Step>

  <Step title="Confirme que seu app está no ar">
    Seu primeiro deploy geralmente leva menos de um minuto. Verifique o status e os registros da sua aplicação diretamente pelo terminal:

    ```bash theme={"system"}
    squarecloud app status
    squarecloud app logs
    ```

    Se você fez deploy de um site ou API, abra `https://<seu-subdominio>.squareweb.app` no navegador: você deve ver sua aplicação respondendo. Se você fez deploy de um bot, envie um comando para confirmar que ele está online.
    <Tip>Seu app não está iniciando? Veja o [guia de solução de problemas](/pt-br/platform/troubleshooting/app-wont-start) para as causas e correções mais comuns.</Tip>
  </Step>
</Steps>

## Recursos adicionais e documentação

Para obter informações mais detalhadas sobre Selenium e suas ferramentas avançadas, visite a [documentação oficial do Selenium](https://www.selenium.dev/pt-br/documentation/webdriver/getting_started/). Lá você encontrará guias técnicos detalhados, tutoriais especializados e documentação completa da API para maximizar o aproveitamento das funcionalidades do Selenium.

## Próximos passos

<CardGroup cols={3}>
  <Card title="A aplicação não inicia" icon="triangle-exclamation" href="/pt-br/platform/troubleshooting/app-wont-start">
    Corrija LACK\_OF\_RAM, módulos faltando e outras falhas na inicialização.
  </Card>

  <Card title="Runtime Python" icon="python" href="/pt-br/articles/getting-started-with-python">
    Como a Square Cloud roda aplicações Python.
  </Card>

  <Card title="Variáveis de ambiente" icon="key" href="/pt-br/platform/environment-variables">
    Mantenha logins e chaves de API usados pela sua automação fora do código.
  </Card>
</CardGroup>

## Contate-nos

Se você continuar enfrentando **dificuldades técnicas**, nossa **equipe de suporte especializada** está disponível para auxiliá-lo. [**Entre em contato conosco**](https://squarecloud.app/pt-br/support) e teremos prazer em ajudá-lo a resolver qualquer questão: a qualidade do suporte é uma grande parte do motivo pelo qual desenvolvedores avaliam a Square Cloud com [**4,9/5 em 402 avaliações**](https://www.trustpilot.com/review/squarecloud.app) no Google e Trustpilot.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.