Проблема с запуском оперы на удаленной машине Selenium server + TestNG

remote
execution
java
selenium
testng
webdriver
Теги: #<Tag:0x00007fedc7576b08> #<Tag:0x00007fedc7576950> #<Tag:0x00007fedc7576798> #<Tag:0x00007fedc7576540> #<Tag:0x00007fedc75763b0> #<Tag:0x00007fedc75761d0>

(Pavel) #1

Всем привет. Есть задача на включение оперы на удаленной машине и проделыванию операций в браузере. Использую TestNG+Selenuim server. Есть такой код :

package first.test;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.opera.OperaDriver;
import org.openqa.selenium.opera.OperaOptions;
import org.testng.annotations.Test;

import java.util.concurrent.TimeUnit;

package first.test;

 

@Test

public void TestOperaOpen() {
System.setProperty("webdriver.opera.driver", "C:/users/USER/downloads/operadriver.exe");
OperaOptions oo = new OperaOptions();
oo.setBinary("C:/Program Files/Opera/launcher.exe");
OperaDriver driver = new OperaDriver(oo);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://yandex.ru/");
driver.findElement(By.id("text")).sendKeys("Погода");
driver.findElement(By.xpath(".//*[text()='Найти']/..")).click();
driver.quit();
} 

}

который локально отрабатывает, но никак не пойму, как переделать его на удаленную машину.

По хрому и ФФ разобрался как выполнить задачу, но по опере никак не найду ничего.

Примеры кода хрома и ФФ:

package first.test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.Test;

import java.net.URL;
import java.util.concurrent.TimeUnit;

import java.util.concurrent.TimeUnit;


public class FirstTest {
//String URLW7 = new String("ip:port/wd/hub");
//String URLW8 = new String("ip:port/wd/hub");
//String URLW10 = new String("ip:port/wd/hub");

private static WebDriver driver;

 

@Test
public void Win10() throws Exception{
DesiredCapabilities capabilityW10 = DesiredCapabilities.chrome();
URL hostW10 = new URL(URLW10);
capabilityW10.setBrowserName("chrome");
WebDriver remoteWebDriverW10 = new RemoteWebDriver(hostW10, capabilityW10);
remoteWebDriverW10.manage().window().maximize();
remoteWebDriverW10.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
remoteWebDriverW10.get("https://yandex.ru/");
remoteWebDriverW10.findElement(By.id("text")).sendKeys("Погода");
remoteWebDriverW10.findElement(By.xpath(".//*[text()='Найти']/..")).click();
remoteWebDriverW10.quit();
}



//ЗАПУСК FIREFOX

@Test
public void Win10F() throws Exception {
DesiredCapabilities capabilityW7f = DesiredCapabilities.firefox();
URL hostW7f = new URL(URLW10);
//capabilityW7f.setCapability(FirefoxDriver.BINARY, "C:/Program Files/Mozilla Firefox/firefox.exe");
capabilityW7f.setCapability(FirefoxDriver.BINARY, "C:/Program Files (x86)/Mozilla Firefox/firefox.exe");
WebDriver remoteWebDriverW7f = new RemoteWebDriver(hostW7f, capabilityW7f);
remoteWebDriverW7f.manage().window().maximize();
remoteWebDriverW7f.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
remoteWebDriverW7f.get("https://yandex.ru/");
remoteWebDriverW7f.findElement(By.id("text")).sendKeys("Погода");
remoteWebDriverW7f.findElement(By.xpath(".//*[text()='Найти']/..")).click();
remoteWebDriverW7f.quit();

}

 

//ЗАПУСК ХРОМА

 

@Test
public void Win10() throws Exception{
DesiredCapabilities capabilityW10 = DesiredCapabilities.chrome();
URL hostW10 = new URL(URLW10);
capabilityW10.setBrowserName("chrome");
WebDriver remoteWebDriverW10 = new RemoteWebDriver(hostW10, capabilityW10);
remoteWebDriverW10.manage().window().maximize();
remoteWebDriverW10.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
remoteWebDriverW10.get("https://yandex.ru/");
remoteWebDriverW10.findElement(By.id("text")).sendKeys("Погода");
remoteWebDriverW10.findElement(By.xpath(".//*[text()='Найти']/..")).click();
remoteWebDriverW10.quit();
}

 

}

Прошу помощи


(Vasiliy Rakshin) #2

В чём именно проблема?


(Pavel) #3

в запуске оперы на удаленной машине


(Vasiliy Rakshin) #4

Как она проявляется?


(Fiodar Motin) #5

Где хоть один линк на удалённую машину?


(Pavel) #7

проблема в том,что я не могу понять куда его вставить тут. Пробовал разные варианты, не получалось. Я так понимаю отличие от хрома и ФФ сильное там?


(Pavel) #8

сейчас консоль пришлю


(Fiodar Motin) #9

Окей небольшой хелпер.

  1. Подключаете selenide
        <dependency>
            <groupId>com.codeborne</groupId>
            <artifactId>selenide</artifactId>
            <version>4.11.1</version>
        </dependency>
  1. Удялаете всю простыню которая изложена в первом посте и работает с selenide
 @BeforeClass
    public void setUp() {
    Configuration.browser = "firefox"; // browser
    Configuration.remote = "https://localhost:4444/wd/hub"; //your remote 
}

@Test
public void youTest(){
//your test methods
}
  1. Никаких absolute path in tests

(Pavel) #10

если написать что-то типа:
@Test
public void Win10F() throws Exception {
DesiredCapabilities capabilityW7f = DesiredCapabilities.operaBlink();
URL hostW7f = new URL(URLW7);
OperaOptions oo = new OperaOptions();
oo.setBinary(“C:/Program Files/Opera/launcher.exe”);
WebDriver remoteWebDriverW7f = new RemoteWebDriver(hostW7f, capabilityW7f);
remoteWebDriverW7f.manage().window().maximize();
remoteWebDriverW7f.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
remoteWebDriverW7f.get(“https://yandex.ru/”);
remoteWebDriverW7f.findElement(By.id(“text”)).sendKeys(“Погода”);
remoteWebDriverW7f.findElement(By.xpath(".//*[text()=‘Найти’]/…")).click();
remoteWebDriverW7f.quit();

}

То консоль выдает: org.openqa.selenium.WebDriverException: Error forwarding the new session cannot find : Capabilities {browserName: operablink, version: }


(Pavel) #11

так по факту же ничего не изменится, я также упрусь в код для оперы, потому что ФФ и хром отрабатывают отлично


(Fiodar Motin) #12

Зачем вам в тесте драйвер??


@BeforeClass
    public void setUp() {
        Configuration.browser = "opera"; // какой браузер запускать
        Configuration.remote = "https://localhost:4444/wd/hub"; //тут ваш адресс к удалённому хабу на  другой машине
    }

    @Test
    public void youTest(){
        open("https://yandex.ru/");  // открыть нужный сайт
        $(By.id("text")).val("Погода");   //  найти  элемент иввести значение
        $(By.xpath(".//*[text()='Найти']/..")).click();   // кликнуть на элемент
    }

(Pavel) #13

изначально я пробовал делать аналогию по хрому или ФФ, но ничего не вышло и нашел только такой пример. Пришлось уже от него уже как-то отталкиваться.


(Fiodar Motin) #14

Хорошо, как поднимается нода с оперой на удалёнке?


(Pavel) #16

java -jar selenium-server-standalone-3.12.0.jar -role hub

java -Dwebdriver.opera.driver=operadriver.exe -jar selenium-server-standalone-3.12.0.jar -role webdriver -hub
http://localhost:4444/grid/register -port 5558 -browser browserName=opera

Вызываю 2 бат файла,один для хаба,другой для ноды


(Pavel) #17

Возможно кто запускал и подскажет как запустить оперу удаленно с данными инструментами?