Zoeken…


PhantomJS [C #]

PhantomJS is een volledig uitgeruste webbrowser zonder hoofd met JavaScript-ondersteuning.

Voordat u begint, moet u een PhantomJS- stuurprogramma downloaden en dit in het begin van uw code plaatsen:

using OpenQA.Selenium;
using OpenQA.Selenium.PhantomJS;

Geweldig, nu over de initialisatie:

var driver = new PhantomJSDriver();

Hiermee wordt eenvoudig een nieuwe instantie van de klasse PhantomJSDriver gemaakt. U kunt het dan op dezelfde manier gebruiken als elke WebDriver zoals:

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);
    }
}

Dit werkt prima. Het probleem dat u waarschijnlijk tegenkwam, is dat wanneer u met UI werkt, PhantomJS een nieuw consolevenster opent, wat in de meeste gevallen niet echt gewenst is. Gelukkig kunnen we het venster verbergen en de prestaties zelfs licht verbeteren met PhantomJSOptions en PhantomJSDriverService . Volledig werkend voorbeeld hieronder:

// 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);
    }
}

Pro-tip: klik op een klasse (bijvoorbeeld de PhantomJSDriverService ) en druk op F12 om te zien wat ze bevatten, samen met een korte beschrijving van wat ze doen.

SimpleBrowser [C #]

SimpleBrowser is een lichtgewicht WebDriver zonder JavaScript-ondersteuning.

Het is aanzienlijk sneller dan een eerder genoemde PhantomJS , maar als het gaat om functionaliteit, is het beperkt tot eenvoudige taken zonder fancy functies.

Allereerst moet u het SimpleBrowser.WebDriver- pakket downloaden en deze code aan het begin plaatsen:

using OpenQA.Selenium;
using SimpleBrowser.WebDriver;

Hier is een kort voorbeeld van hoe het te gebruiken:

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);
    }
}

Browser zonder hoofd in Java

HTMLUnitDriver

HTMLUnitDriver is de lichtste implementatie van headless (GUI-minder) browser voor webdriver op basis van HtmlUnit. Het modelleert HTML-documenten en biedt een API waarmee u pagina's kunt oproepen, formulieren kunt invullen, op koppelingen kunt klikken, enzovoort, net als in uw normale browser. Het ondersteunt JavaScript en werkt met AJAX-bibliotheken. Het wordt gebruikt voor het testen en ophalen van gegevens van de website.


Voorbeeld: gebruik van HTMLUnitDriver om een lijst met vragen op te halen van 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();
                }
    }

Het is hetzelfde als elke andere browser (Mozilla Firefox, Google Chrome, IE), maar het heeft geen GUI, uitvoering is niet zichtbaar op het scherm.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow