web-dev-qa-db-fra.com

Comment implémenter chromedriver dans Selenium dans la plate-forme Linux

Quelqu'un peut-il me dire comment utiliser le pilote Chrome dans la plate-forme Selenium pour Linux?

J'ai mon chrome à username/home/chromedriver.

Mon code est:

System.setProperty("webdriver.chrome.driver", "/home/username/ChromeDriver/chrome‌​driver");
driver = new ChromeDriver();
driver.get("facebook.com");

L'erreur que je reçois est:

org.openqa.Selenium.WebDriverException: Impossible de lancer ou de se connecter à Chrome. Veuillez vérifier que ChromeDriver est à jour.

Utilisation de Chrome binary at: /opt/google/chrome/google-chrome

(AVERTISSEMENT: le serveur n'a fourni aucune information de trace de pile)

11
user2732362

Depuis [la documentation officielle] ( https://github.com/SeleniumHQ/Selenium/wiki/ChromeDriver :

Exigences

Le ChromeDriver contrôle le navigateur à l'aide du cadre proxy d'automatisation de Chrome.

Le serveur s'attend à ce que vous ayez Chrome installé à l'emplacement par défaut pour chaque système:

OS          Expected Location of Chrome
-------------------------------------
Linux          /usr/bin/google-chrome
Mac            /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
Windows XP     %HOMEPATH%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe
Windows Vista  C:\Users\%USERNAME%\AppData\Local\Google\Chrome\Application\chrome.exe

Pour les systèmes Linux, ChromeDriver attend /usr/bin/google-chrome pour être un lien symbolique vers le binaire Chrome binaire. Voir aussi la section sur en remplaçant le Chrome) .

Commencer

Pour vous installer, commencez par télécharger le serveur pré-construit approprié. Assurez-vous que le serveur peut se trouver sur votre PATH ou spécifiez son emplacement via le webdriver.chrome.driver propriété système. Enfin, il vous suffit de créer une nouvelle instance ChromeDriver:

WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");

Par conséquent, téléchargez la version de chromedriver dont vous avez besoin , décompressez-la quelque part sur votre PATH (ou spécifiez le chemin d'accès via une propriété système), puis exécutez le pilote.

16
Petr Janeček

Nous avons installé avec succès

Sudo apt-get install unzip
wget -N http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.Zip -P ~/Downloads
unzip ~/Downloads/chromedriver_linux64.Zip -d ~/Downloads
chmod +x ~/Downloads/chromedriver
Sudo mv -f ~/Downloads/chromedriver /usr/local/share/chromedriver
Change the directory to /usr/bin/chromedriver
Sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
Sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

Exécutez maintenant le script et ajoutez ce qui suit dans le fichier d'environnement.

Capybara.register_driver :chrome do |app| client = Selenium::WebDriver::Remote::Http::Default.new Capybara::Selenium::Driver.new(app, :browser => :chrome, :http_client => client) end

Capybara.javascript_driver = :chrome

Remarque: modifiez la version du pilote chrome en fonction de votre type de système d'exploitation, par exemple 32 bits ou 64 bits.

8
Kalyan Kumar

Pour moi, j'ai travaillé avec ces commandes:

  1. Décompressez le fichier -> décompressez -q chromedriver_linux64.Zip
  2. Forcer la copie dans le répertoire 'usr/bin' -> Sudo mv -f chromedriver/usr/bin

Le code Selenium était quelque chose comme ça.


System.setProperty("webdriver.chrome.driver","/usr/bin/chromedriver");

WebDriver driver = new ChromeDriver();

driver.get("https://mvnrepository.com");

driver.close();
2
Claudinha Menezes

Vous pouvez voir un petit exemple de cet exemple

Pour linux, je télécharge le pilote chrome et le garde en tant que variable de chemin d'accès système (ou le place dans un dossier de chemin d'accès existant). Et à partir du code, j'utilise les moyens suivants (ajouter une propriété et lancer avec le chemin du pilote chrome)

System.setProperty("webdriver.chrome.driver", "/usr/local/bin/chromedriver");
ChromeDriverService service = new ChromeDriverService.Builder()
                .usingDriverExecutable(new File("/usr/local/bin/chromedriver"))
                .usingAnyFreePort()
                .build();
        try {
            service.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new RemoteWebDriver(service.getUrl(), DesiredCapabilities.chrome());
0
Shantonu