descargar - ¿Cómo cambio el foco a una nueva pestaña emergente en Selenium?
selenium php (7)
Estoy usando Selenium y Firefox.
Tengo un enlace en una página (digamos linkA) que abre una nueva página en una nueva pestaña. La nueva pestaña se muestra cuando se hace clic en linkA. Entonces quiero interactuar con la nueva página.
Aquí está mi script de selenio:
- haga clic en linkA
- pausa 5000
- selectWindow Title
- haga clic en el enlace B (nota: el enlace B está en la página nueva)
Selenium no puede identificar la nueva pestaña. Informa:
[advertir] ¡El enlace tiene el objetivo ''_blank'', que no es compatible con Selenium! Objetivo aleatorizado para ser: selenium_blank24003
¿Hay alguna manera de decirle a Selenium que interactúe con la pestaña que se muestra?
¿Intentó agregar un WindowFocus entre selectWindow y hacer clic en linkB?
Editar: selectWindow toma un Javascript windowID. ¿Su enlace A especifica un ID de ventana para el acceso de Selenium?
Aquí está la primera página de prueba completa (t1.html), en la llamada a window.open, el segundo parámetro es ''WindowTest'', este es el ID de ventana de javascript que busca el selenio.
<a href="javascript:void(0);" name="t1"
onclick="window.open(''t2.html'', ''WindowTest'', ''width=450,height=600'');">
test
</a>
Aquí está la segunda página de prueba (t2.html):
<a href="t1.html" name="t2">2test2</a>
La ejecución de su script termina con la ventana emergente en t1.html Mi script
click link=test
pause 5000
selectWindow WindowTest
windowFocus
click link=2test2
Aquí están los pasos que tomé para Selenium IDE:
- encontrar el enlace en cuestión
- eliminar el atributo "objetivo" del enlace
- copiar el destino href en una variable (myUrl)
- modificar el enlace href-> javascript: window.open (myUrl, ''myWindow'')
- haga clic en el enlace
- seleccione la ventana ''myWindow''
getEval | this.page (). findElement (''link = click here''). removeAttribute (''target'') ||
storeEval | this.page (). findElement (''link = click here''). href | myUrl
getEval | this.page (). findElement (''link = click here''). href = "javascript: window.open (''$ {myUrl}'', ''myWindow'')" ||
click | enlace = haga clic aquí ||
pausa | 1000 ||
selectWindow | name = myWindow ||
Funcionó para mí
[info] Executing: |storeEval | this.browserbot.findElement(''link=Pastanet'').href | Link_PastaNet |
[info] Executing: |openWindow | ${Link_PastaNet} | MyWindows |
Simplemente usa este código.
public void newtab(){
System.setProperty("webdriver.chrome.driver", "E://eclipse//chromeDriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.w3schools.com/tags/att_a_target.asp");
//I have provided a sample link. Make sure that you have provided the correct link in the above line.
driver.findElement(By.className("tryitbtn")).click();
new Actions(driver).sendKeys(driver.findElement(By.tagName("html")), Keys.CONTROL).sendKeys(driver.findElement(By.tagName("html")), Keys.NUMPAD2).build().perform();
// In keyboard we will press
//ctrl+1 for 1st tab
//ctrl+2 for 2nd tab
//ctrl+3 for 3rd tab.
//Same action is written in the above code.
}
hola pruebe este ...
Set<String> winSet = driver.getWindowHandles();
List<String> winList = new ArrayList<String>(winSet);
String newTab = winList.get(winList.size() - 1);
System.out.println("winList: "+winList.size());
//driver.close(); // close the original tab
driver.switchTo().window(newTab);
lericain59 me envió en la dirección correcta, aunque tuve que hacer algunos cambios para que funcione con mi versión de IDE de selenio (estoy ejecutando 1.0.6). Además, para mis propósitos, no necesité verificar tanto que se abrió en una ventana separada, solo que estaba abriendo la ventana correcta.
Aquí está el guión que funcionó para mí.
- storeEval | this.browserbot.findElement (''link = click here''). href | myUrl |
- abierto | $ {myUrl} ||
this.page () no funcionó. Parece haber sido reemplazado con this.browserbot. Además, acabo de abrir la página directamente: evita una pausa manual y tiene menos pasos.
Iterator<String> windowIterator = driver.getWindowHandles().iterator();while (windowIterator.hasNext()) {
String windowHandle = windowIterator.next();
driverwindow = driver.switchTo().window(windowHandle);
if (_driverwindow.getTitle().equals("Title of the window to switch")) {
}
}