MavenプロジェクトでSeleniumの最新バージョン3.4.0を使用しようとしています。以下の依存関係を使用して、すべてのSeleniumのjarファイルをインポートしました。
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>3.4.0</version>
</dependency>
問題は、メインメソッド内の以下のコードについて、Eclipseのプロジェクトの依存関係を解決できないことです。
public class FirefoxTest {
public static void main(String[] args) {
FirefoxOptions options = new FirefoxOptions();
options.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); //This is the location where you have installed Firefox on your machine
FirefoxDriver driver = new FirefoxDriver(options);
driver.get("http://www.google.com");
}
}
私は何が欠けていますか? Eclipseは、FirefoxDriverタイプを依存関係に解決できません。助けてください。
Selenium 3.4.0およびMozilla Firefox 53.xを使用するには、 here から最新のgeckodriver v0.16.1をダウンロードする必要があります。マシンに保存し、コードでgeckodriverの絶対パスを提供します。
次のように、必要な依存関係でpom.xmlを更新したことを確認します。
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>3.4.0</version>
</dependency>
WebDriver
実装を使用するのではなく、FirefoxDriver
インターフェースを使用することをお勧めします。
コードは次のようになります。
System.out.println("Welcome to Maven World");
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.navigate().to("http://www.google.com");
次のコマンドを提供して、以前の依存関係をフラッシュし、新しい依存関係をインストールして、テストを実行します。
>mvn clean
>mvn install
>mvn test
Seleniumのバージョン3では、Firefoxドライバーのインスタンス化が変更されたと確信しています。このコードを使用してください:
System.setProperty("webdriver.firefox.driver","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
WebDriver driver = new FirefoxDriver();
これについてもお読みください こちら
動作テストコードもあります here
また、クラスの先頭に正しいインポート文が含まれていることを確認してください。
import org.openqa.Selenium.WebDriver;
import org.openqa.Selenium.firefox.FirefoxDriver;
私は同じ問題に直面し、長い間解決策を探していました。コードまたは依存関係を変更しても、コードはすでにビルドされており、間違ったSelenium jarが割り当てられているため、コードは引き続きSelenium jarを誤ったものから取得します。
次の手順を実行します:
.m2
フォルダーを特定します。.m2
フォルダを特定したら、それを開き、リポジトリに移動し、orgフォルダに移動します。pom.xml
ファイルに戻り、Selenium 3.4.0依存関係を貼り付け、3.5.3またはその他のものをすべて削除します(3.4.0依存関係だけで十分です)。もう一度、他のすべてのSelenium依存関係を削除します。これをpom.xmlに追加してください
<!-- https://mvnrepository.com/artifact/org.seleniumhq.Selenium/selenium-firefox-driver -->
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-firefox-driver</artifactId>
<version>3.13.0</version>
</dependency>
iam get from here
Selenium 3.4+に必要なgeckoドライバーのMaven座標が見つかりませんでした。おそらく誰かが公開リポジトリを作成しましたが、それでもドライバーをダウンロードしてプロジェクトに直接追加するのは簡単です。静的パスの問題(これらのドライバーをプロジェクトに保持し、後で問題が発生しないようにし、セットアップを複雑にすることなくプロジェクト全体を送信できるようにする)には、これらのドライバーをプロジェクトの下に配置するのが最適ですsrc/main/resources
フォルダ。
次からドライバをダウンロードします。 https://github.com/mozilla/geckodriver/releases (ARM、Linux、Mac、およびWindowsドライバのダウンロード)
複数のOSで作業している場合、OSに基づいて使用するドライバーを切り替えることができます。 Javaでオペレーティングシステムをプログラムで決定する方法は?
package com.kenmcwilliams.demo;
import Java.io.IOException;
import Java.nio.file.FileSystems;
import Java.nio.file.Path;
import org.openqa.Selenium.By;
import org.openqa.Selenium.WebDriver;
import org.openqa.Selenium.WebElement;
import org.openqa.Selenium.firefox.FirefoxDriver;
import org.openqa.Selenium.support.ui.ExpectedCondition;
import org.openqa.Selenium.support.ui.WebDriverWait;
/**
*
* @author ken
*/
public class App {
public static void main(String[] args){
//if you're going to use more than one OS, you should make this switchable based on OS.
Path path = FileSystems.getDefault().getPath("src/main/resources/geckodriver");
System.setProperty("webdriver.gecko.driver",path.toString());
WebDriver driver = new FirefoxDriver();
//from here down is just a working example...
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Cheese!");
element.submit();
System.out.println("Page title is: " + driver.getTitle());
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
});
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
}
}
Geckoドライバーのダウンロード: https://github.com/mozilla/geckodriver/releases
System.setProperty("webdriver.gecko.driver", "c:\\geckodriver.exe");
WebDriver driver = new MarionetteDriver();
driver.get("http://www.google.com");
以下の依存関係を使用してSeleniumをダウンロードします。
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>3.4.0</version>
</dependency>
依存関係がダウンロードされたら。ビルドプロジェクトを実行します。
これで問題が解決します