0

Bom dia pessoal, estou criando uma aplicação em python usando selenium e com o webdriver_manager, gostaria de saber se teria como escolher uma pasta do meu favor para que o driver seja baixado e utilizado lá, no caso do webdriver_manager a pasta selecionada é:

.wdm\drivers\chromedriver\win32\

Existe alguma forma de escolher a propria pasta? para que faça donwload?

1

2 Respostas 2

0

Sim existe, você cria um profile com as configurações que deseja, onde pode indicar a pasta de download e eliminar as necessidades de confirmação. As configurações dependem do que você deseja, especificar tipos de extensões de arquivo, dentre outras. Mas no geral seria algo assim:

## Personalização do profile para determinar pasta de download e evitar confirmações
from selenium.webdriver.firefox.options import Options

options = Options()
options.set_preference("browser.download.folderList", 2)
options.set_preference("browser.download.manager.showWhenStarting", False)
options.set_preference("browser.download.dir", <insira a pasta desejada aqui>)
options.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/x-gzip")

browser = webdriver.Firefox(options=options)

Na hora de indicar o caminho para a pasta desejada aí depende do seu sistema operacional, questões de WindowsPath ou PosixPath em Linux e demais baseados em Unix variam um pouco quanto aos caracteres de escape / ou \ para indicar os subdiretórios.

Caso não funcione, veja que o tipo/extensão dos arquivos também importa, pode atuar neles alterando a última linha do bloco de opções acima, assim por exemplo:

profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/zip;application/octet-stream;application/x-gzip")

Tente aí e veja se funciona.

0

Você pode utilizar o atributo path para especificar onde o webdriver_manager deve armazenar/gerenciar os webdrivers. Por exemplo, supondo que no Windows eu queira armazenar os webdrivers em %homepath%\webdrivers, posso fazer assim:

from pathlib import Path

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager


webdrivers_path = Path.home() / 'webdrivers' 
executable_path = ChromeDriverManager(path=webdrivers_path).install()

with webdriver.Chrome(executable_path) as driver:
    driver.get('https://pt.stackoverflow.com/questions/540525')
    print(driver.title)

Quando executado, você terá o output abaixo e o webdriver baixado no local especificado.

(.venv) py .\main.py


====== WebDriver manager ======
Current google-chrome version is 97.0.4692
Get LATEST chromedriver version for 97.0.4692 google-chrome
There is no [win32] chromedriver for browser  in cache
Trying to download new driver from https://chromedriver.storage.googleapis.com/97.0.4692.71/chromedriver_win32.zip
Driver has been saved in cache [%homepath%\drivers\chromedriver\win32\97.0.4692.71]

DevTools listening on ws://127.0.0.1:51874/devtools/browser/c2afcdca-c4a9-4bd1-bbb3-47e6219a8022
python - Webdriver_manager install em pasta selecionada - Stack Overflow em Português

Selenium 4

Se estiver utilizando a versão mais recente do Selenium, a forma de especificar o caminho do executável mudou e é preciso passar um Service na criação do driver:

from pathlib import Path

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager


webdrivers_path = Path.home() / 'webdrivers' 
executable_path = ChromeDriverManager(path=webdrivers_path).install()

with webdriver.Chrome(service=Service(executable_path)) as driver:
    driver.get('https://pt.stackoverflow.com/questions/540525')
    print(driver.title)
1
  • RESOLVEUUUU, muito obrigado, já pesquisei em vários locais e nada de resolver, vlww msm. Commented 20/01/2022 às 11:13

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .