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());
}
}
- Comienza una nueva instancia de Firefox
- Obtenga el ID de la sesión y guárdelo en algún lugar (archivo de propiedad)
- Detenga la prueba, deje el navegador abierto
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());
}
}
}
- Comienza una nueva instancia de Firefox
- Obtenga el ID de la sesión y guárdelo en algún lugar (archivo de propiedad)
- Detenga la prueba, deje el navegador abierto
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.