Estoy usando el cliente appium javascript con uiautomator2 como motor de automatización para Android. En una de las pantallas que tiene varios botones como Botón 1, Botón 2, Botón 3, etc. apilados en horizontal con desplazamiento. Sin embargo, solo los dos primeros botones estarán visibles al cargar la página [Referir captura de pantalla].
Quiero hacer clic en el botón 4. He implementado el siguiente código para manejar el desplazamiento y hacer clic en el botón, pero no puedo interrumpir el bucle ya que el atributo siempre es falso.
var element = await driver.elementByXPath("//android.widget.Button[contains(@text,'Button 4')]"); var scrollFromElement = await driver.elementByXPath("//android.widget.Button[contains(@text,'Button 2')]"); var isEleFocused = await element.getAttribute("focused"); console.log("concierge element is Focused - " + isEleFocused); if (isEleFocused == "false") { var i = 0; do{ await swipeElementAndroid(scrollFromElement, "RIGHT") var d1 = await element.getAttribute("focused"); if(d1 == "true"){ i=10 break; } else{ await swipeElementAndroid(scrollFromElement, "RIGHT") i=i+1 console.log("i="+i) } }while(i<5) } await sleepwait(500) console.log("after scroll- if condition") e1 = await driver.elementByXPath("//android.widget.Button[contains(@text,'Button 4')]") await e1.click()Amablemente sugiera una forma alternativa de manejar lo mismo.
Nota: Los atributos como mostrados, en los que se puede hacer clic siempre son verdaderos aunque el botón no esté visible.