Szukaj…


PhantomJS [C #]

PhantomJS to w pełni funkcjonalna bezgłowa przeglądarka internetowa z obsługą JavaScript.

Przed rozpoczęciem musisz pobrać sterownik PhantomJS i upewnić się, że umieściłeś go na początku kodu:

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

Świetnie, teraz do inicjalizacji:

var driver = new PhantomJSDriver();

Spowoduje to po prostu utworzenie nowej instancji klasy PhantomJSDriver. Możesz go używać w taki sam sposób, jak każdego WebDrivera, takiego jak:

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

To działa dobrze. Jednak problemem, który prawdopodobnie napotkałeś, jest to, że podczas pracy z interfejsem użytkownika PhantomJS otwiera nowe okno konsoli, co w większości przypadków nie jest tak naprawdę potrzebne. Na szczęście możemy ukryć okno, a nawet nieznacznie poprawić wydajność za pomocą PhantomJSOptions i PhantomJSDriverService . Pełny przykład działania poniżej:

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

Wskazówka: kliknij klasę (np. PhantomJSDriverService ) i naciśnij F12, aby zobaczyć dokładnie, co zawierają, wraz z krótkim opisem tego, co robią.

SimpleBrowser [C #]

SimpleBrowser to lekki WebDriver bez obsługi JavaScript.

Jest znacznie szybszy niż wspomniany PhantomJS , jednak jeśli chodzi o funkcjonalność, ogranicza się do prostych zadań bez wymyślnych funkcji.

Najpierw musisz pobrać pakiet SimpleBrowser.WebDriver , a następnie umieścić ten kod na początku:

using OpenQA.Selenium;
using SimpleBrowser.WebDriver;

Oto krótki przykład, jak z niego korzystać:

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

Bezgłowa przeglądarka w Javie

HTMLUnitDriver

HTMLUnitDriver to najlżejsza implementacja bezgłowej (bez GUI) przeglądarki dla Webdriver opartej na HtmlUnit. Modeluje dokumenty HTML i udostępnia interfejs API, który umożliwia wywoływanie stron, wypełnianie formularzy, klikanie łączy itp., Tak jak w normalnej przeglądarce. Obsługuje JavaScript i współpracuje z bibliotekami AJAX. Służy do testowania i pobierania danych ze strony internetowej.


Przykład: użycie HTMLUnitDriver do pobrania listy pytań z 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();
                }
    }

Jest taki sam jak każda inna przeglądarka (Mozilla Firefox, Google Chrome, IE), ale nie ma GUI, wykonanie nie jest widoczne na ekranie.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow