Проблема (Вопрос) заключается в то что на проекте сейчас юзаю голый Selenium и решил внедрить Selenide. Все тесты запускаю в Docker контейнере с помощью Selenoid
Помогите настроить запуск тестов в контейнере. Вот моя песочница с настройками https://github.com/AndreyMelnichenko/Selenoid
Я попытался сделать сделать как в примере что нагуглил GitHub - erolstt/selenoid-selenide-example
Кроме кучи эксепшенов ничего не вышло.
1 лайк
ordeh
(Fiodar Motin)
11.Июнь.2018 06:08:37
#2
Вот проект с примером на selenide в обычном докере с images селениума
package selenium.config;
import com.codeborne.selenide.Configuration;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
public abstract class ConciseAPI {
public WebDriver driver;
static{
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http", "warn");
}
String currentDir = System.getProperty("user.dir");
@Parameters({"browser", "browserVersion", "headless", "remote", "timeout", "baseUrl"})
@BeforeClass
This file has been truncated. show original
С селенойдом все тоже самое почти
@BeforeClass
public void setup() throws MalformedURLException {
switch (runType){
case("local"):
Configuration.browser = "chrome";
Configuration.browserPosition="1921x0";
Configuration.browserSize="1800x1000";
break;
case("docker"):
Configuration.browser = "chrome";
DesiredCapabilities browser = new DesiredCapabilities();
browser.setBrowserName("chrome");
browser.setVersion("66");
browser.setCapability("enableVNC", true);
driver = new RemoteWebDriver(URI.create("http://18.195.216.182:4444/wd/hub").toURL(),browser);
setWebDriver(driver);
driver.manage().window().setSize(new Dimension(1920, 1080));
break;
}
}
Это реально работает. Есть у кого-то лучше предложения как реализовать можно?
1 лайк
Сдается мне, что browser.setCapability("enableVNC", true);
не включает VNC, потому как на селеноид UI я не вижу выполнения теста.
Уверены, что у вас работает?
Я просто попробовал по вашей аналогии, создал такой же класс и простой тест на например
open("https://mvnrepository.com/artifact/log4j/log4j/1.2.17");
$("#maincontent > table > tbody > tr:nth-child(1) > th").waitUntil(Condition.appears, 120000);
$("#maincontent > table > tbody > tr:nth-child(1) > th").shouldBe(Condition.text("License"));
assertEquals("Maven Repository: log4j » log4j » 1.2.17", title());
И получаю всегда падение уже на первой проверке
Element not found {#maincontent > table > tbody > tr:nth-child(1) > th}
Expected: visible
И если открываю в браузере UI то вижу, что VNC не работает, все в консоли только
Более того, я пытался брать source после откртия
open("https://mvnrepository.com/artifact/log4j/log4j/1.2.17");
System.out.println(source());
И в этом сорсе все так же не вижу своих элементов (например “License”)
ArtOfLife
(Sergey Korol)
23.Июнь.2018 13:13:40
#8
Какой образ используете? Чтобы VNC заработал, нужно качать
selenoid/vnc:[BROWSER_NAME]_[VERSION]
если один тест то VNC может не успеть вам показать, что б протестить VNC поставте после загрузки URL Thread.sleep(“5000”);
Да пробовал ставить сон даже в 20 секунд и все равно падает.
Я к сожалению, не настраивал селеноид, стоит он на удаленной машине, но этот вопрос уточню.
Хочу локально поставить селеноид и проверить, вполне может быть настроили криво сервер.
тогда похоже на то что Сергей( @ArtOfLife ) говорил, возможно при установке забыли ключик -vnc
добавить и закачали образы без VNC
Разобрался, надо было переопределять WebDriverProvider
public class SelenoidWebDriverProvider implements WebDriverProvider {
@Override
public WebDriver createDriver(DesiredCapabilities capabilities) {
DesiredCapabilities browser = new DesiredCapabilities();
browser.setBrowserName("chrome");
browser.setCapability("enableVNC", true);
try {
RemoteWebDriver driver = new RemoteWebDriver(
URI.create("http://localhost:4444/wd/hub").toURL(),
browser
);
driver.manage().window().setSize(new Dimension(1280, 1024));
return driver;
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
}
нужно попробовать такую реализацию у себя. Как Вы используете в кода дальше SelenoidWebDriverProvider
?
Пишите потом в вашем тесте например в @BeforeClass
Configuration.browser = "com.<Тут путь к классу>.SelenoidWebDriverProvider";
Возможно колхозно, зато работает, просто сам недавно писать стал, долго искал и нормального варианта не нашел, очень странно, что в Selenide из коробки не сделают реализацию VNC и прочих мелочей.
Опять же, если у кого есть более верное и лаконичное решение, то с удовольствием прочту.
1 лайк
WebDriverProvider не обязательно использовать, все можно настроить используя Configurations клас:
Configuration.remote = "http://localhost:4444/wd/hub";
Configuration.browser = "chrome";
Configuration.browserSize = "1280x1024";
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("enableVNC", true);
Configuration.browserCapabilities = capabilities;
5 лайков
Да вы правы, попробовал, спасибо!
Но вот оказалось, что например если у вас стоит следующий параметр для скачивания файлов
fileDownload = FileDownloadMode.PROXY;
То увидите
Наверно надо чего-то донастроить.
pbezpal5
(Pavel)
20.Март.2020 22:20:29
#18
Классно. Возьму на заметку