Como executar os casos de teste do Selenium WebDriver no Chrome?

160

Eu tentei isso

WebDriver driver = new ChromeDriver();

Mas estou recebendo o erro como

Testes com falha: setUp (com.TEST): o caminho para o executável do driver deve ser definido pela propriedade do sistema webdriver.chrome.driver; para mais informações, consulte o código aqui . A versão mais recente pode ser baixada no Link

Como posso fazer o Chrome testar os casos de teste Selenium-WebDriver?

Principe
fonte
Seria útil saber, se você baixou o driver selenium chrome do code.google.com/p/chromedriver/downloads/list e o adicionou à biblioteca no eclipse em "Adicionar frascos externos" antes de executar o selenium-java código.
Hemanth

Respostas:

252

Você precisa baixar o driver executável em: ChromeDriver Download

Então, tudo o que você precisa fazer é usar o seguinte antes de criar o objeto do driver (já mostrado na ordem correta):

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
WebDriver driver = new ChromeDriver();

Isso foi extraído do guia mais útil da documentação do ChromeDriver .

aimbire
fonte
@aimbire: ei, estou enfrentando o mesmo problema. Fiz a mesma coisa sugerida por você, mas obtendo esse erro. "java.lang.IllegalStateException: O executável motorista não existe: D: \ selenimPRJarg1 \ chromedriver.exe" Estou faltando alguma coisa? "
kTiwari
É necessário fazer o download do Selenium Standalone Server aqui docs.seleniumhq.org/download e adicionar o arquivo jar como uma dependência ao seu projeto Java.
dikirill
4
onde você usa / digita isso? System.setProperty ("webdriver.chrome.driver", "/ path / to / chromedriver"); Driver WebDriver = novo ChromeDriver ();
tijnn
1
Eu explorei todas as respostas a esta pergunta e somente essa funcionou para mim. (y)
puffles
Embora isso seja tecnicamente correto, você realmente não deve definir essa variável ambiental no código, é o mesmo que codificar um caminho no seu código. A variável de ambiente deve ser definida na máquina em que você executa o código, permitindo que cada máquina armazene o driver chrome executável em um local único, mas ainda assim tudo funcione.
Ardesco 02/05/19
21

Faça o download da versão de atualização do driver chrome a partir do Chrome Driver. Leia também a nota de versão aqui. Se o navegador Chrome for atualizado, você precisará fazer o download de um novo chormedriver no link acima, pois seria compacto com a nova versão do navegador.

 public class chrome 
 {

  public static void main(String[] args) {

       System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
       WebDriver driver = new ChromeDriver();


    driver.get("http://www.google.com");

  }

 }
Ankit jain
fonte
3
Agora essa é uma solução complicada. Eu aconselho você a mudar isso, se é o que você usa hoje em dia.
aimbire
1
O link para download está desatualizado.
Gone Coding
Este código não está funcionando na versão 69.0.3497.100 do Google Chrome (versão oficial) (64 bits). Por favor, mano, sugira um novo código. Até agora ele estava trabalhando na versão mais antiga inferior a 65.0.0 versão
Mitesh Thakery
18

Você deve fazer o download do chromeDriver em uma pasta e adicionar essa pasta à sua variável PATH. Você precisará reiniciar o console para fazê-lo funcionar.

Fabrice31
fonte
8

Se você estiver usando homebrew em um MacOS, poderá usar o comando:

(EDIT) :brew tap homebrew/cask && brew cask install chromedriver

Depois disso, deve funcionar bem sem nenhuma outra configuração.

swanhella
fonte
2
agora é brew tap homebrew/cask && brew cask install chromedriver.
Luk2302
6

Você precisa instalar o driver chrome. Você pode instalar este pacote usando o nugget, como mostrado abaixo

Prathap Kudupu
fonte
1
Pode ser essa, mas a versão no NuGet é muito antiga: 2.10.0, datada de 13 de outubro de 2014
Tiago Freitas Leal
Desatualizado novamente em 23 de março. Não foi possível usar no Chrome mais recente.
willem 23/03
6

Você pode usar o código abaixo para executar casos de teste no Chrome usando o driver da web Selenium:

import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class ChromeTest {

    /**
     * @param args
     * @throws InterruptedException
     * @throws IOException 
     */
    public static void main(String[] args) throws InterruptedException, IOException {
        // Telling the system where to find the Chrome driver
        System.setProperty(
                "webdriver.chrome.driver",
                "E:/chromedriver_win32/chromedriver.exe");

        WebDriver webDriver = new ChromeDriver();

        // Open google.com
        webDriver.navigate().to("http://www.google.com");

        String html = webDriver.getPageSource();

        // Printing result here.
        System.out.println(html);

        webDriver.close();
        webDriver.quit();
    }
}
Rakesh Chaudhari
fonte
5

Encontre a versão mais recente chromedriver aqui . Uma vez baixado, descompacte-o na raiz da sua instalação python, por exemplo C:/Program Files/Python-3.5, e é isso. Você nem precisa especificar o caminho em qualquer lugar e / ou adicionar chromedriverao seu caminho ou algo semelhante. Acabei de fazer isso em uma instalação limpa do Python e isso funciona.

tagoma
fonte
4
maus conselhos ... não poluem sua instalação python
Corey Goldberg
Além disso, o OP nunca especificou o Python
Corey Goldberg
4

Faça o download da versão mais recente do driver chrome e use este código:

System.setProperty("webdriver.chrome.driver", " path of chromedriver.exe");
WebDriver driver= new ChromeDriver();
driver.manage().window().maximize();
Thread.sleep(10000);
driver.get("http://stackoverflow.com");
Anuj Teotia
fonte
1

No Ubuntu, você pode simplesmente instalar o chromium-chromedriverpacote:

apt install chromium-chromedriver

Esteja ciente de que isso também instala uma versão desatualizada de selênio. Para instalar o selênio mais recente:

pip install selenium
serv-inc
fonte
0

Todas as respostas acima estão corretas, a seguir é apresentado um pequeno mergulho profundo no problema e na solução.

O construtor de driver no selênio, por exemplo

WebDriver driver = new ChromeDriver();

procura pelo executável do driver, nesse caso, o driver chrome procura pelo executável do driver chrome, caso o serviço não consiga encontrar o executável, a exceção é lançada

é daí que vem a exceção (observe o método de verificação de estado)

 /**
   *
   * @param exeName Name of the executable file to look for in PATH
   * @param exeProperty Name of a system property that specifies the path to the executable file
   * @param exeDocs The link to the driver documentation page
   * @param exeDownload The link to the driver download page
   *
   * @return The driver executable as a {@link File} object
   * @throws IllegalStateException If the executable not found or cannot be executed
   */
  protected static File findExecutable(
      String exeName,
      String exeProperty,
      String exeDocs,
      String exeDownload) {
    String defaultPath = new ExecutableFinder().find(exeName);
    String exePath = System.getProperty(exeProperty, defaultPath);
    checkState(exePath != null,
        "The path to the driver executable must be set by the %s system property;"
            + " for more information, see %s. "
            + "The latest version can be downloaded from %s",
            exeProperty, exeDocs, exeDownload);

    File exe = new File(exePath);
    checkExecutable(exe);
    return exe;
  }

A seguir está o método de estado de verificação que lança a exceção

  /**
   * Ensures the truth of an expression involving the state of the calling instance, but not
   * involving any parameters to the calling method.
   *
   * <p>See {@link #checkState(boolean, String, Object...)} for details.
   */
  public static void checkState(
      boolean b,
      @Nullable String errorMessageTemplate,
      @Nullable Object p1,
      @Nullable Object p2,
      @Nullable Object p3) {
    if (!b) {
      throw new IllegalStateException(format(errorMessageTemplate, p1, p2, p3));
    }
  }

SOLUÇÃO : defina a propriedade do sistema antes de criar o objeto do driver da seguinte maneira

System.setProperty("webdriver.gecko.driver", "path/to/chromedriver.exe");
WebDriver driver = new ChromeDriver();

a seguir está o trecho de código (para chrome e firefox) em que o serviço de driver procura o executável do driver:

Cromada:

   @Override
    protected File findDefaultExecutable() {
      return findExecutable("chromedriver", CHROME_DRIVER_EXE_PROPERTY,
          "https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver",
          "http://chromedriver.storage.googleapis.com/index.html");
    }

Raposa de fogo:

@Override
 protected File findDefaultExecutable() {
      return findExecutable(
        "geckodriver", GECKO_DRIVER_EXE_PROPERTY,
        "https://github.com/mozilla/geckodriver",
        "https://github.com/mozilla/geckodriver/releases");
    }

em que CHROME_DRIVER_EXE_PROPERTY = "webdriver.chrome.driver" e GECKO_DRIVER_EXE_PROPERTY = "webdriver.gecko.driver"

semelhante é o caso de outros navegadores, a seguir está o instantâneo da lista da implementação do navegador disponível

insira a descrição da imagem aqui

chuha.billi
fonte
0
To run Selenium WebDriver test cases in Chrome, follow these steps:


first of all set the property & chrome driver path

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
then initialize the Chrome Driver's object

WebDriver driver = new ChromeDriver();
then pass the url into get method of WebDriver

driver.get("http://www.google.com");
Ghanshyam
fonte
0

Incluí o binário nos diretórios de recursos de meus projetos da seguinte maneira:

src\main\resources\chrome\chromedriver_win32.zip
src\main\resources\chrome\chromedriver_mac64.zip
src\main\resources\chrome\chromedriver_linux64.zip

Código:

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.SystemUtils;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.io.*;
import java.nio.file.Files;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public WebDriver getWebDriver() throws IOException {
    File tempDir = Files.createTempDirectory("chromedriver").toFile();
    tempDir.deleteOnExit();
    File chromeDriverExecutable;

    final String zipResource;
    if (SystemUtils.IS_OS_WINDOWS) {
        zipResource = "chromedriver_win32.zip";
    } else if (SystemUtils.IS_OS_LINUX) {
        zipResource = "chromedriver_linux64.zip";
    } else if (SystemUtils.IS_OS_MAC) {
        zipResource = "chrome/chromedriver_mac64.zip";
    } else {
        throw new RuntimeException("Unsuppoerted OS");
    }

    try (InputStream is = getClass().getResourceAsStream("/chrome/" + zipResource)) {
        try (ZipInputStream zis = new ZipInputStream(is)) {
            ZipEntry entry;
            entry = zis.getNextEntry();
            chromeDriverExecutable = new File(tempDir, entry.getName());
            chromeDriverExecutable.deleteOnExit();
            try (OutputStream out = new FileOutputStream(chromeDriverExecutable)) {
                IOUtils.copy(zis, out);
            }
        }
    }

    System.setProperty("webdriver.chrome.driver", chromeDriverExecutable.getAbsolutePath());
    return new ChromeDriver();
}
Jonas_Hess
fonte
-2

Faça o download do exe do chromedriver e extraia-o no local atual do projeto. Aqui está o link, onde podemos baixar a versão mais recente do chromedriver.

https://sites.google.com/a/chromium.org/chromedriver/

Aqui, o código simples para o navegador de inicialização e navegue até o URL.

System.setProperty("webdriver.chrome.driver", "path of chromedriver.exe");

WebDriver driver = new ChromeDriver();

driver.get("https://any_url.com");
ER.swatantra
fonte
Faça o download do chromedriver e extraia-o. Em seguida, crie uma pasta no seu projeto e nomeie-a como chromedriver e mantenha o arquivo .exe nele. e use esse caminho. Este é o exemplo de código simples. 'código' System.setProperty ("webdriver.chrome.driver", System.getProperty ("user.dir") + "\\ chromedriver \\ chromedriver.exe"); Driver WebDriver = novo ChromeDriver (); driver.get (" google.co.in" ); Caixa de pesquisa WebElement = driver.findElement (By.name ("q")); searchbox.sendKeys ("melhores tutoriais em vídeo sobre selênio grátis"); searchbox.submit ();
Vinay #
Por favor, considere atualizar esta resposta com as informações adicionais comentadas por vinay.
Ricardo Souza