# Selenium

[**Selenium**](https://www.selenium.dev/) é uma ferramenta que ajuda a automatizar interações em navegadores web para testes de sites e mais.

Para integrar o Selenium com a Oxylabs [**Residential Proxies**](https://oxylabs.io/products/residential-proxy-pool), siga as instruções abaixo ou assista a este tutorial em vídeo:

{% embed url="<https://www.youtube.com/watch?v=uh71blwf1l0>" %}

**Passo 1.** Instalar [**Selenium Wire**](https://github.com/wkeeling/selenium-wire) para estender as bindings Python do Selenium, pois usar o módulo Selenium padrão para implementar proxies que exigem autenticação torna todo o processo complicado. Você pode fazer isso usando o `pip` comando: `pip install selenium-wire`

Outro pacote recomendado para essa integração é o `webdriver-manager`. É um pacote que simplifica o gerenciamento dos drivers binários para diferentes navegadores. Neste caso, **não há necessidade de baixar manualmente uma nova versão de um web driver após cada atualização**.

Você pode instalar o `webdriver-manager` usando o `pip` comando também: `pip install webdriver-manager`

**Passo 2.** Especifique suas credenciais de conta para os proxies funcionarem:

`USERNAME = "your_username"`

`PASSWORD = "your_password"`

`ENDPOINT = "pr.oxylabs.io:7777"`

Você precisará ajustar`your_username` e `your_password` campos com o nome de usuário e a senha do seu usuário de proxy.

{% hint style="info" %}
Você pode criar e gerenciar seus usuários de proxy em nosso [**painel**](https://dashboard.oxylabs.io/en/)**.**
{% endhint %}

**Passo 3**. Verifique se o proxy está funcionando visitando [**ip.oxylabs.io**](https://ip.oxylabs.io/). Se tudo estiver funcionando corretamente - ele retornará o endereço IP do proxy que você está usando.

```
tente:
    driver.get("https://ip.oxylabs.io/")
    return f'\nYour IP is: {driver.find_element(By.CSS_SELECTOR, "pre").text}'
finalmente:
    driver.quit()
```

Código completo para a integração da Oxylabs [**Residential Proxies**](https://oxylabs.io/products/residential-proxy-pool) com o Selenium:

```
from selenium.webdriver.common.by import By
from seleniumwire import webdriver
# Um pacote para manter o chromedriver sempre atualizado.
from webdriver_manager.chrome import ChromeDriverManager

USERNAME = "your_username"
PASSWORD = "your_password"
ENDPOINT = "pr.oxylabs.io:7777"

def chrome_proxy(user: str, password: str, endpoint: str) -> dict:
    wire_options = {
        "proxy": {
            "http": f"http://{user}:{password}@{endpoint}",
            "https": f"https://{user}:{password}@{endpoint}",
        }
    }

    return wire_options

def execute_driver():
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    proxies = chrome_proxy(USERNAME, PASSWORD, ENDPOINT)
    driver = webdriver.Chrome(
    ChromeDriverManager(driver_version='<VERSION>').install(), options=options, seleniumwire_options=proxies
    )
    tente:
        driver.get("https://ip.oxylabs.io/")
        return f'\nYour IP is: {driver.find_element(By.CSS_SELECTOR, "pre").text}'
    finalmente:
        driver.quit()


if __name__ == '__main__':
    print(execute_driver())
```

Se você quiser aprender mais sobre web scraping com Selenium, leia nosso [**post do blog**](https://oxylabs.io/blog/selenium-web-scraping).

Encontre o post original do blog sobre integração do Selenium [aqui](https://oxylabs.io/resources/integrations/selenium).
