Ricerca…


PhantomJS [C #]

PhantomJS è un browser Web headless con funzionalità complete con supporto JavaScript.

Prima di iniziare, devi scaricare un driver PhantomJS e assicurati di inserirlo all'inizio del codice:

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

Ottimo, ora sull'inizializzazione:

var driver = new PhantomJSDriver();

Questo semplicemente creerà una nuova istanza della classe PhantomJSDriver. È quindi possibile utilizzarlo allo stesso modo di ogni WebDriver come:

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

Funziona bene Tuttavia, il problema che probabilmente hai riscontrato è che, quando si lavora con l'interfaccia utente, PhantomJS apre una nuova finestra della console, che nella maggior parte dei casi non è richiesta. Fortunatamente, possiamo nascondere la finestra e persino migliorare leggermente le prestazioni usando PhantomJSOptions e PhantomJSDriverService . Esempio di lavoro completo di seguito:

// 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 : fai clic su una classe (ad es. PhantomJSDriverService ) e premi F12 per vedere esattamente cosa contengono e una breve descrizione di ciò che fanno.

SimpleBrowser [C #]

SimpleBrowser è un WebDriver leggero senza supporto JavaScript.

È considerevolmente più veloce di un PhantomJS sopra, tuttavia quando si tratta di funzionalità, è limitato a semplici compiti senza caratteristiche di fantasia.

In primo luogo, è necessario scaricare il pacchetto SimpleBrowser.WebDriver e quindi inserire questo codice all'inizio:

using OpenQA.Selenium;
using SimpleBrowser.WebDriver;

Ora, ecco un breve esempio su come usarlo:

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 senza testa in Java

HTMLUnitDriver

HTMLUnitDriver è l'implementazione più leggera del browser headless (senza GUI) per Webdriver basato su HtmlUnit. Modella i documenti HTML e fornisce un'API che consente di richiamare pagine, compilare moduli, fare clic su collegamenti, ecc. Proprio come fai nel tuo normale browser. Supporta JavaScript e funziona con le librerie AJAX. Viene utilizzato per testare e recuperare dati dal sito web.


Esempio: utilizzo di HTMLUnitDriver per scaricare l'elenco di domande da 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();
                }
    }

È uguale a qualsiasi altro browser (Mozilla Firefox, Google Chrome, IE), ma non ha GUI, l'esecuzione non è visibile sullo schermo.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow