selenium-webdriver
ヘッドレスブラウザ
サーチ…
PhantomJS [C#]
PhantomJS
は、JavaScriptをサポートしたフル機能のヘッドレスWebブラウザです。
始める前に、 PhantomJSドライバをダウンロードして、コードの先頭に入れてください:
using OpenQA.Selenium;
using OpenQA.Selenium.PhantomJS;
今、初期設定に:
var driver = new PhantomJSDriver();
これにより、単にPhantomJSDriverクラスの新しいインスタンスが作成されます。あなたはそれを次のようなすべてのWebDriverと同じ方法で使うことができます:
using (var driver = new PhantomJSDriver())
{
driver.Navigate().GoToUrl("http://stackoverflow.com/");
var questions = driver.FindElements(By.ClassName("question-hyperlink"));
foreach (var question in questions)
{
// This will display every question header on StackOverflow homepage.
Console.WriteLine(question.Text);
}
}
これは正常に動作します。しかし、おそらく遭遇する問題は、UIをPhantomJS
て作業する場合、 PhantomJS
は新しいコンソールウィンドウを開きます。これはほとんどの場合にはPhantomJS
ありません。幸いにも、我々はウィンドウを非表示にすることができ、そして少しでも使用してパフォーマンス改善PhantomJSOptions
、そしてPhantomJSDriverService
。以下の完全な実例:
// Options are used for setting "browser capabilities", such as setting a User-Agent
// property as shown below:
var options = new PhantomJSOptions();
options.AddAdditionalCapability("phantomjs.page.settings.userAgent",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0");
// Services are used for setting up the WebDriver to your likings, such as
// hiding the console window and restricting image loading as shown below:
var service = PhantomJSDriverService.CreateDefaultService();
service.HideCommandPromptWindow = true;
service.LoadImages = false;
// The same code as in the example above:
using (var driver = new PhantomJSDriver(service, options))
{
driver.Navigate().GoToUrl("http://stackoverflow.com/");
var questions = driver.FindElements(By.ClassName("question-hyperlink"));
foreach (var question in questions)
{
// This will display every question header on StackOverflow homepage.
Console.WriteLine(question.Text);
}
}
プロのヒント:クラス( PhantomJSDriverService
)をクリックし、F12 PhantomJSDriverService
を押して内容が正確に表示されているかどうかを簡単に説明します。
SimpleBrowser [C#]
SimpleBrowser
は、JavaScriptをサポートしない軽量WebDriverです。
前述のPhantomJS
よりもはるかに高速ですが、機能性に関しては、ファンシーな機能を持たない単純なタスクに限定されています。
まず、 SimpleBrowser.WebDriverパッケージをダウンロードし、このコードを最初に置く必要があります:
using OpenQA.Selenium;
using SimpleBrowser.WebDriver;
さて、これを使用する方法の簡単な例を次に示します:
using (var driver = new SimpleBrowserDriver())
{
driver.Navigate().GoToUrl("http://stackoverflow.com/");
var questions = driver.FindElements(By.ClassName("question-hyperlink"));
foreach (var question in questions)
{
// This will display every question header on StackOverflow homepage.
Console.WriteLine(question.Text);
}
}
Javaのヘッドレスブラウザ
HTMLUnitDriver
HTMLUnitDriverは、HtmlUnitに基づくWebdriver用のヘッドレス(GUIレス)ブラウザの中で最も軽量な実装です。 HTMLドキュメントをモデル化し、通常のブラウザと同様に、ページの呼び出し、フォームへの記入、リンクのクリックなどを可能にするAPIを提供します。 JavaScriptをサポートし、AJAXライブラリで動作します。ウェブサイトからのデータのテストや検索に使用されます。
例: HTMLUnitDriverを使用してhttp://stackoverflow.com/
から質問のリストを取得する。
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
class testHeadlessDriver{
private void getQuestions() {
WebDriver driver = new HtmlUnitDriver();
driver.get("http://stackoverflow.com/");
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
List<WebElement> questions = driver.findElements(By.className("question-hyperlink"));
questions.forEach((question) -> {
System.out.println(question.getText());
});
driver.close();
}
}
これは、他のブラウザ(Mozilla Firefox、Google Chrome、IE)と同じですが、GUIを持たないため、実行が画面に表示されません。