ejemplos chrome java selenium selenium-webdriver selenium-chromedriver remotewebdriver

java - chrome - ejemplos selenium webdriver



WebDriver Java: vuelva a conectar la sesiĆ³n existente del navegador webdriver a una instancia del controlador (0)

Estoy buscando una manera de volver a conectar una sesión de navegador webdriver existente a una instancia de controlador para poder controlar el navegador de nuevo.

Hasta ahora, he intentado lo siguiente:
I. =======================================

Referencia: https://stackoverflow.com/a/38827934/2285470

Navegador: Firefox v. 51.01 / Chrome v. 56.0.2924.87

Controlador: geckodriver v. 0.14 / chromedriver v. 2.27

Solución probada:
1. Cree una clase personalizada que extienda RemoteWebDriver

public class RemoteDriver extends RemoteWebDriver { public RemoteDriver(URL url, String sessionId) { super(); setSessionId(sessionId); setCommandExecutor(new HttpCommandExecutor(url) { @Override public Response execute(Command command) throws IOException { if (command.getName() != "newSession") { return super.execute(command); } return super.execute(new Command(getSessionId(), "getCapabilities")); } }); startSession(new DesiredCapabilities()); } }

  1. Comienza una nueva instancia de Firefox
  2. Obtenga el ID de la sesión y guárdelo en algún lugar (archivo de propiedad)
  3. Detenga la prueba, deje el navegador abierto
  4. Invoque la clase personalizada que extiende el RemoteWebDriver usando lo siguiente:

    RemoteDriver cdriver = new RemoteDriver(new URL("http://localhost:7055/hub"),"my-session-id");

Resultado: org.openqa.selenium.WebDriverException: No command or response codec has been defined. Unable to proceed org.openqa.selenium.WebDriverException: No command or response codec has been defined. Unable to proceed en la línea return super.execute(new Command(getSessionId(), "getCapabilities"));

II. =======================================
Referencia: https://groups.google.com/forum/#!topic/selenium-developers/1LygDvlQ3H4

Navegador: Firefox v. 51.01 / Chrome v. 56.0.2924.87

Controlador: geckodriver v. 0.14 / chromedriver v. 2.27

Solución probada:
1. Cree una clase personalizada que extienda RemoteWebDriver

public class RemoteDriver extends RemoteWebDriver { @Override protected void startSession(Capabilities desiredCapabilities) { String sid = getSessionIdFromPropertyFile(); if (sid != null) { setSessionId(sid); try { super.startSession(desiredCapabilities); } catch (WebDriverException e) { // session is not valid sid = null; } } if (sid == null) { super.startSession(desiredCapabilities); saveSessionIdToPropertyFile(getSessionId().toString()); } } }

  1. Comienza una nueva instancia de Firefox
  2. Obtenga el ID de la sesión y guárdelo en algún lugar (archivo de propiedad)
  3. Detenga la prueba, deje el navegador abierto
  4. Invoque la clase personalizada que extiende el RemoteWebDriver usando lo siguiente:

    RemoteDriver cdriver = new RemoteDriver(); cdriver.startSession(DesiredCapabilities.firefox()); cdriver.get("https://www.google.com");

Resultado: org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure. org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.

Parece que otros pueden hacer que funcione, pero después de unas pocas horas de intentar todavía no puedo hacer esto.

Estoy usando selenio-java versión 3.1.0

Gracias por adelantado.