Mi escenario: en una página, tengo varios botones. Después de hacer clic en el botón, la página se vuelve a cargar sin el botón en el que se hizo clic.
Tengo un problema con la implementación de una solución adecuada.
Actualmente tengo algo como esto:
let selector = 'selector for All button on page'; let buttons = browser.$$(selector); for (int i = 0; i < buttons.length; i++) { let button = browser.$(selector); button.moveToObject(); button.waitForVisible(); button.click(); browser.waitToVisible(elementAfterPageRefresh); }El problema ocurre después de la primera iteración. A veces funciona simplemente moviéndose al botón, a veces el script ni siquiera hace clic en el segundo botón.
¿Cuál es la forma correcta de resolver mi problema con webdriverio?
¿Puede también proporcionar un seguimiento de error desde la consola después de ejecutar su código? Supongo que se enfrenta al notorio error "Referencia de elemento obsoleto..." .
En primer lugar, un controlador WebdriverIO , así como uno WebdriverJS (su predecesor) siempre perderá la referencia (ID de elemento) al elemento/elementos consultados previamente después de que el navegador ejecuta una recarga de página.
Entonces, según Christian Bromman ( @ChristianB ), tendrá que hacer algo como:
runner .init() .url('https://www.google.dk/search?q=burrito') .getText(".r").then(function(res){ // given `.r` is the <a /> tag on google search page res.value.forEach(function(elem){ console.log(elem); clicks.push( runner .click('=' + elem.ELEMENT) // use link text selector to query the element again .pause(5000) .back() .pause(2000) ); }); return q.all(clicks); });Supongo que esto es solo con fines de capacitación, ya que no puedo entender por qué hacer clic en una serie de botones activaría una actualización de la página. :)