Sök…


PhantomJS [C #]

PhantomJS är en fullt utrustad huvudlös webbläsare med JavaScript-stöd.

Innan du börjar måste du ladda ner en PhantomJS- drivrutin och se till att sätta detta i början av din kod:

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

Bra, nu på initieringen:

var driver = new PhantomJSDriver();

Detta skapar helt enkelt en ny instans av klassen PhantomJSDriver. Du kan sedan använda det på samma sätt som alla webbdrivrutiner som:

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

Det här fungerar bra. Men problemet du troligtvis stött på är att när du arbetar med UI öppnar PhantomJS ett nytt konsolfönster, vilket inte är riktigt önskat i de flesta fall. Lyckligtvis kan vi dölja fönstret och till och med förbättra prestandan med PhantomJSOptions och PhantomJSDriverService . Fullständigt fungerande exempel nedan:

// 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: klicka på en klass (t.ex. PhantomJSDriverService ) och tryck på F12 för att se exakt vad de innehåller tillsammans med en kort beskrivning av vad de gör.

SimpleBrowser [C #]

SimpleBrowser är en lätt WebDriver utan JavaScript-stöd.

Det är betydligt snabbare än ovan nämnda PhantomJS , men när det gäller funktionalitet är det begränsat till enkla uppgifter utan snygga funktioner.

Först måste du ladda ner SimpleBrowser.WebDriver- paketet och sedan sätta den här koden i början:

using OpenQA.Selenium;
using SimpleBrowser.WebDriver;

Här är ett kort exempel på hur du använder det:

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

Huvudlös webbläsare i Java

HTMLUnitDriver

HTMLUnitDriver är den mest lätta implementeringen av huvudlös (GUI-mindre) webbläsare för webbdrivare baserad på HtmlUnit. Den modellerar HTML-dokument och tillhandahåller ett API som låter dig åberopa sidor, fylla i formulär, klicka på länkar osv. Precis som du gör i din vanliga webbläsare. Det stöder JavaScript och fungerar med AJAX-bibliotek. Det används för att testa och hämta data från webbplatsen.


Exempel: Använd HTMLUnitDriver för att hämta en lista med frågor från 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();
                }
    }

Det är samma som alla andra webbläsare (Mozilla Firefox, Google Chrome, IE), men den har inte GUI, exekvering är inte synlig på skärmen.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow