Cómo abrir un enlace en la ventana o pestaña adyacente usando la clase de acciones (Contexto, haga clic en elemento-> sendkeys ArrowDown -> sendkeys Enter)

Quiero abrir un enlace de una aplicación en una nueva ventana. Usar la clase de acciones es abrir el enlace en la misma ventana en la que estoy actualmente.

Intenté usar la clase Actions con el siguiente código tanto en el controlador de Chrome como en el controlador de Firefox con múltiples aplicaciones, pero ninguna funcionó.

System.setProperty("webdriver.gecko.driver", "D:\\MySpace\\AmozonEcomm\\Dependencies\\geckodriverv21.exe");
WebDriver driver = new FirefoxDriver(); //Creating an instance of Chrome driver
driver.manage().window().maximize();
driver.get("http://automate-apps.com/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

Actions action = new Actions(driver);
action.contextClick(driver.findElement(By.partialLinkText("Selenium Questions"))).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();

Mi expectativa es que el enlace se abra en una nueva ventana ya que estoy tratando de seleccionar la opción "Abrir enlace en una nueva ventana" después de hacer clic en el contexto. Pero cada vez que se abre el enlace en la misma ventana.

Respuesta 1

Aquí hay dos opciones para abrir un enlace en una nueva ventana (no pestaña).

WebElement el = driver.findElement(By.partialLinkText("Selenium Questions"));
Actions action = new Actions(driver);

contextClick : contextClick()puede ser caprichoso, en algunos entornos simplemente se niega a lograr el mismo resultado que en otros.
Aún así, si quieres probarlo, envía la tecla "w"; ese es el acceso directo para "Abrir en una nueva ventana":

action.contextClick(el).perform();
action.sendKeys("w").perform();  // in two steps

Shift-clic : el acceso directo para una nueva ventana es shift-clic, en lugar de ctrl-clic para una nueva pestaña. Este enfoque tiene una tasa de repetibilidad más alta frente a contextClick(), siempre que el navegador lo admita.

action.keyDown(Keys.SHIFT).click(el).keyUp(Keys.SHIFT).build().perform();
Respuesta: 2

Tengo 1,000 líneas de datos en un archivo de texto y me gustaría que cada línea sea su propio flotante []. 1,1,1,1,1,1 2,2,2,2,2,2 3,3,3,3,3,3 daría como resultado: float [0] = {1,1,1,1 , 1,1} float [1] = {2,2,2,2,2,2} ...

Tengo un caso así. Necesito guardar la fecha actual después de cada versión de lanzamiento con gradle. ¿Hay alguna posibilidad de guardar la fecha en el archivo gradle.properties que pueda leer en el próximo trabajo de compilación? Mi ...

Estoy usando JAX-RS 1.0. El servidor verifica que haya un encabezado HTTP personalizado antes de procesar la solicitud. Me gustaría hacer de este tipo de comportamiento similar a AOP para el cliente JAX-RS, donde ...

Tengo el siguiente escenario: 1. Creé un JFrame jFrame en una clase "FrontEnd.java" que implementa ActionListener. Luego agrego un objeto Canvas3D a su ContentPane, y luego, agrego un ...