Ребята , подскажите что такое htmlunitdriver и когда и для чего его использовать ? В интернете посмотрел примеры, вроде так же как обычный вебдрайвер вызывается . Так в чем разница ?
Если коротко, это веб-браузер без башки (графического интерфейса). А значит практически без тормозов, но при этом очень специфически поддерживает джава-скрипт.
Подробнее в документации написано:
- То есть браузер запускаться не должен?
Я попробовал сейчас вместо обычного запуска вебрайвера сделать так
driver = new HtmlUnitDriver();
Тест не запустился, ошибки полезли.
- В каких случаях используется этот HtmlUnitDriver?
- Можно самый простой пример с А+Б, где используется HtmlUnitDriver?
Вот накидал пример, нашел в гугле, я так понял браузер вообще не должен запускаться, но тест игнорируется и ничего не происходит, просвятите пожалуйста
package test;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class HtmlUnitDriverTest {
private static WebDriver driver;
@BeforeClass
public static void setUp(){
driver = new HtmlUnitDriver();
}
@Test
public void test(){
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Selenium");
element.submit();
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
}
}
Это довольно специфичный браузер без пользовательского интерфейса вообще. Потом еще появился PhantomJS. Но теперь я уже ни то ни другое предпочитаю не использовать. Если нужен безголовый браузер попробуйте запускать Chrome в режиме headless
В последних версиях селениума HtmlUnit и PhantomJS убрали вот поэтому у тебя и ошибки, щас используют firefox и chrome без графического интерфейса вместо них.
А объясните для чего и в каких случаях используют браузер без графического интерфейса? Пару живых примеров если можно
Нашел такой код
@Test
public void Headless(){
ChromeOptions options = new ChromeOptions();
options.addArguments("headless");
options.addArguments("window-size=1200x600");
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
WebElement el = driver.findElement(By.name("q"));
el.sendKeys("Selenium Java");
}
Запускаю его - тест пассед, но ничего не происходит. Я не до конца понимаю что за headless режим. Как я понял, это запускается программа, только без окна браузера, но как тогда выполняются команды Открыть браузер - Открыть гугл - написать что-то в поиске. Поясните плиз
-
Никаких видимых окон и не будет, в этом то и фишка. Когда разворачиваешь на серверной оси - намного проще - экран не нужен, видеокарта не нужна. А сам движок браузера работает. Он даже скрины может делать
-
Такой безголовый режим мало того что не требует настройки виртуального дисплея, так еще и по слухам быстрей работает и потенциально меньше ест оперативки, но цифр у меня нет.
-
Но учти что видео записать не получится - только скриншоты. Ну и я слышал про определенные нюансы и отличия в работе в сравнении с обычным браузером.
Понял теперь, спасибо.
А как мне локально затестить это дело? Ну вот запустил я тест. Где мне логи смотреть и скрины(в каких случаях они делаются?)
- Есть логи хромдрайвера
- Есть логи твоих тестов
- Ну еще потенциально логи селениум сервера, если ты работаешь через него
вы можете запустить этот тест у себя?
@Test
public void Headless(){
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("window-size=1200x600");
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
WebElement el = driver.findElement(By.name("q"));
el.sendKeys("Selenium Java");
}
Я хочут понять правильно ли все написано.
И почему у меня в консоли ничего не выводится?
А зачем тебе что то выводить?
Попробуй проверить несушествующий элемент - сразу упадешь, увидишь что браузер работает
не ну стоп, я понимаю, но я хочу посмотреть результат выполнения кода, пусть даже в той же консоли, а у меня вообще ничего не показывается. Я хочу разобраться в этой теме, помогите пожалуйста
Так запускай без хедлес и смотри что происходит.
хочешь посмотреть результат допиши еще после строки el.sendKeys(“Selenium Java”); следующие
el.sendKeys(Keys.ENTER);
List<WebElement> listEl = driver.findElements(By.xpath("//div[@class='g']//h3/a"));
for(WebElement a: listEl)
System.out.println(a.getAttribute("textContent"));
У тебя должен появится список из заголовков всех страниц на первой поисковой странице гугла.
Что-то типа такого
Free Selenium Tutorial | Selenium WebDriver Tutorials | For Beginners
Maven Repository: org.seleniumhq.selenium » selenium-java
Пишем первый автотест с Selenium Webdriver и Java. Часть 2 …
Downloads - Selenium
Selenium WebDriver - Selenium - автоматизация веб-приложений
Введение в автоматизированное тестирование на Java с Selenium
How to create a simple Selenium WebDriver test using Java and IntelliJ
Selenium Tutorial - Get started using Java - AirPair
Getting Started with WebDriver-Selenium for Java in Eclipse | Sauce …
Что такое Selenium WebDriver? / Хабрахабр
не появляется ничего
Просто Process finished with exit code 0
попробуй скачать последнюю версию драйвера, селениума, и хрома, если не заработает, попробуй выполнить в обычном режиме.
я не так давно все полностью ставил, похоже проблема не в этом, так как в обычном режиме тоже ничего не печатает в консоль. Вот полный мой код
package test;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.logging.LogEntry;
import java.net.MalformedURLException;
import java.util.List;
import static org.junit.Assert.assertTrue;
public class BrowserHeadless {
private static WebDriver driver;
@BeforeClass
public static void SetUp() throws MalformedURLException {
System.setProperty("webdriver.chrome.driver","C:\\Users\\username\\downloads\\chromedriver_win32\\chromedriver.exe");
}
@Test
public void Headless(){
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("window-size=1200x600");
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
WebElement el = driver.findElement(By.name("q"));
el.sendKeys("Selenium Java");
List<WebElement> listEl = driver.findElements(By.xpath("//div[@class='g']//h3/a"));
for(WebElement a: listEl)
System.out.println(a.getAttribute("textContent"));
}
}
ты забыл строчку el.sendKeys(Keys.ENTER); ее надо добавить после вот этой строки el.sendKeys(“Selenium Java”);