selenium
Javaでセレンの最初のプロジェクト
サーチ…
前書き
これはJavaを使用したSeleniumの紹介です。 Seleniumに関して何か知っているとは思っていませんが、このコースに従うにはJava知識が必要です。
ダウンロードリンク:
IntelliJ Idea for Seleniumをセットアップする
前提条件:
- Javaがインストールされている
- セレンはフォルダ内に抽出されます(2つのファイルと1つのフォルダを含みます)
IntelliJ Idea for Seleniumをセットアップするには、以下の手順に従ってください。
- 「新規プロジェクト」をクリックします。
- Java <"Hello World"アプリケーションを選択
- プロジェクトの名前を入力して作成します。
さあ、行きましょう
File < Project Structure < Modules < Dependencies
ここで、緑のプラス( +
)アイコンをクリックし、ライブラリを選択します。次に、抽出されたSeleniumフォルダに移動し、 " selenium-java 2.4.0.jar "を追加します。これを追加したら、もう一度緑色のプラス( +
)アイコンをクリックし、 "ディレクトリ"を選択します。今回は、Seleniumのlibsフォルダを探して、OKをクリックして選択します。
OKをクリックすると、すべて設定されます。
ChromeDriverの設定
前提条件:ChromeDriverがダウンロードされている
クラスに次のコードをコピーします。
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "path of the exe file\\chromedriver.exe");
}
linuxを使用している場合は、ChromeDriver Binaryのパスを指定します。
セレンを使ってウェブサイトを開く
get
メソッドを使用してウェブサイトに移動します。たとえば、これはgoogleを開く
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "path of the exe file\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https:www.google.com");
Thread.sleep(3000); //wait for 3 seconds
driver.quit(); //close Chrome
}
driver.quit()
はブラウザを閉じます。遅延を作成するために、 Thread.sleep(3000)
を使用します。
セレンの要素を取得する
SeleniumのすべてのHtml要素はWebElement
と呼ばれます。たとえば、 p
タグはWebElement
、 a
タグはWebElement
などとなります。次のhtml構造を考えてみましょう。
<a id="link1" href="https://www.google.com">google</a>
<p class="p1">
This is a paragraph
</p>
我々が取得したい場合は今、タグを、私たちは何ができますa
WebElement link = driver.findElement(By.id("link1"));
これをクリックすると
link.click();
別の例を考えてみましょう。我々はのテキストたかった場合p
タグを、 すなわち 、「 これは段落です 」、我々は行うことができます
WebElement p = driver.findElement(By.className("p1"));
System.out.println(p.getText());
エレメントをタグで取得することもできます。
WebElement tag = driver.findElement(By.tagName("a"));
セレンの実施例
セレンの基本を知ったので、私たちは自分のプロジェクトを作ることができます。この例では、スタックオーバーフローに関する最新の質問を見つけるプログラムを作成します。
私たちは簡単に始め、開いたスタックオーバーフローを可能にします。
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "path of the exe file\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https:stackoverflow.com");
Thread.sleep(3000);
driver.quit();
}
さて、もしあなたがページのソースを見ると、すべての質問がclassNameのquestion-hyperlink
a
タグであることがわかりquestion-hyperlink
。複数の質問があるのでしかし、我々は、使用List
のWebElement
代わりに、 WebElement
。したがって、私たちはできる
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "path to chromedriver\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https:stackoverflow.com");
List<WebElement> list = driver.findElements(By.className("question-hyperlink"));
}
今、私たちは、取得する必要があるhref
の属性の質問のリンクを持っているタグを、。 a
これを行うために、各WebElement
でgetAttribute("href")
を使用することができます。
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "path to chromedriver\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https:stackoverflow.com");
List<WebElement> list = driver.findElements(By.className("question-hyperlink"));
System.out.println(list.size());
list.forEach(e->System.out.println(e.getAttribute("href")));
driver.quit();
}
Stack-overflowでトップ質問のリンクが表示されます。
セレンのWebElementの属性の取得
WebElement
の属性を取得するには、そのWebElement
getAttribute
を使用します。たとえば、次のhtmlタグ
<a id="click" href="https://www.google.com">
要素のhref
属性は
WebElement e = driver.findElement(By.id("click"));
System.out.println(e.getAttribute("href")); //prints https://www.google.com