Поиск…


PhantomJS [C #]

PhantomJS является полнофункциональным браузером без браузера с поддержкой JavaScript.

Перед запуском вам нужно будет загрузить драйвер PhantomJS и обязательно поместите его в начало своего кода:

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

Отлично, теперь на инициализацию:

var driver = new PhantomJSDriver();

Это просто создаст новый экземпляр класса PhantomJSDriver. Затем вы можете использовать его так же, как каждый WebDriver, например:

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

Это прекрасно работает. Тем не менее, проблема, с которой вы, вероятно, сталкивались, заключается в том, что при работе с пользовательским интерфейсом PhantomJS открывает новое консольное окно, которое в большинстве случаев действительно не PhantomJS . К счастью, мы можем скрыть окно и даже немного улучшить производительность с помощью PhantomJSOptions и PhantomJSDriverService . Полный рабочий пример ниже:

// 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: нажмите на класс (например, PhantomJSDriverService ) и нажмите F12, чтобы увидеть, что именно они содержат, и краткое описание того, что они делают.

SimpleBrowser [C #]

SimpleBrowser - это легкий WebDriver без поддержки JavaScript.

Это значительно быстрее, чем вышеупомянутый PhantomJS , однако, когда дело доходит до функциональности, оно ограничено простыми задачами без каких-либо причудливых функций.

Во-первых, вам нужно будет скачать пакет SimpleBrowser.WebDriver , а затем поместить этот код в начало:

using OpenQA.Selenium;
using SimpleBrowser.WebDriver;

Теперь, вот краткий пример того, как его использовать:

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

Безглавой браузер в Java

HTMLUnitDriver

HTMLUnitDriver - самая легкая версия браузера без браузера (без GUI) для Webdriver на основе HtmlUnit. Он моделирует документы HTML и предоставляет API, который позволяет вам вызывать страницы, заполнять формы, ссылки на клики и т. Д., Как и в обычном браузере. Он поддерживает JavaScript и работает с библиотеками AJAX. Он используется для тестирования и извлечения данных с веб-сайта.


Пример. Использование HTMLUnitDriver для получения списка вопросов из 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();
                }
    }

Он аналогичен любому другому браузеру (Mozilla Firefox, Google Chrome, IE), но у него нет графического интерфейса, выполнение на экране не отображается.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow