selenium-webdriver
Navigateurs sans tête
Recherche…
PhantomJS [C #]
PhantomJS
est un navigateur Web sans tête avec prise en charge de JavaScript.
Avant de commencer, vous devrez télécharger un pilote PhantomJS et assurez-vous de le placer au début de votre code:
using OpenQA.Selenium;
using OpenQA.Selenium.PhantomJS;
Super, maintenant sur l'initialisation:
var driver = new PhantomJSDriver();
Cela créera simplement une nouvelle instance de la classe PhantomJSDriver. Vous pouvez ensuite l'utiliser de la même manière que chaque WebDriver, par exemple:
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);
}
}
Cela fonctionne bien. Cependant, le problème que vous avez probablement rencontré est que, lorsque vous utilisez l'interface utilisateur, PhantomJS
ouvre une nouvelle fenêtre de console, ce qui n'est pas vraiment souhaité dans la plupart des cas. Heureusement, nous pouvons masquer la fenêtre et même améliorer légèrement les performances en utilisant PhantomJSOptions
et PhantomJSDriverService
. Exemple de travail complet ci-dessous:
// 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);
}
}
Astuce Pro: cliquez sur une classe (par exemple, le PhantomJSDriverService
) et appuyez sur F12 pour voir exactement ce qu'elles contiennent ainsi qu'une brève description de ce qu'elles font.
SimpleBrowser [C #]
SimpleBrowser
est un WebDriver léger sans support JavaScript.
Il est considérablement plus rapide qu'un PhantomJS
mentionné ci-dessus, mais en ce qui concerne les fonctionnalités, il se limite à des tâches simples sans fonctionnalités sophistiquées.
Tout d'abord, vous devrez télécharger le package SimpleBrowser.WebDriver , puis mettre ce code au début:
using OpenQA.Selenium;
using SimpleBrowser.WebDriver;
Maintenant, voici un court exemple d'utilisation:
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);
}
}
Navigateur sans tête en Java
HTMLUnitDriver
HTMLUnitDriver est l'implémentation la plus légère d'un navigateur sans interface graphique (sans interface graphique) pour Webdriver basé sur HtmlUnit. Il modélise les documents HTML et fournit une API qui vous permet d'appeler des pages, de remplir des formulaires, de cliquer sur des liens, etc., comme vous le faites dans votre navigateur habituel. Il prend en charge JavaScript et fonctionne avec les bibliothèques AJAX. Il est utilisé pour tester et récupérer des données à partir du site Web.
Exemple: Utilisation de HTMLUnitDriver pour récupérer une liste de questions sur 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();
}
}
Il est identique à tout autre navigateur (Mozilla Firefox, Google Chrome, IE), mais il n’a pas d’interface graphique, l’exécution n’est pas visible à l’écran.