无法在 appium 中定位元素以在 Android 应用程序中弹出自动警报
Unable to locate elements in appium for auto alert pop up in Android App
[在此处输入图片描述][1]我有一个应用程序会向用户显示一个弹出窗口,让用户点击是或否,具体取决于他们是否要启用或不启用指纹选项。
-当密码通过身份验证时,会自动出现一个弹出窗口,询问用户是否要启用 FINGERPRINT。
我尝试通过元素的 ID 和 xpath 定位元素,但 none 有效
driver.findElement(By.id("etEmailAddress")).sendKeys("wa@qa.xyz");
driver.findElement(By.id("btn_continue")).click();
Thread.sleep(5000);
driver.findElement(By.id("etPassword")).sendKeys("PackageX@1");
driver.findElementByXPath("//android.widget.EditText[@text='Password']").sendKeys("PackageX@1");
driver.findElement(By.id("btn_login")).click();
Thread.sleep(5000);
``` //driver.findElement(By.id("app.px.packagex:id/tvNo")).click();
//driver.findElement(By.id("tvNo")).click();
the last 2 lines above:
//driver.findElement(By.id("tvYes")).click();
//driver.findElement(By.id("app.px.packagex:id/tvNo")).click();
I tried using id for both but not working
I want to tap on either of the buttons and then I will be taken into the App where I will be able to see a list of members in the App.
Below is the image in which that pop up appear as auto when CONTINUE button is tapped after providing the password, which asks for Yes or No for FINGERPRINT.:
[enter image description here][1]
[1]: https://i.stack.imgur.com/M6tIk.jpg
所以在花了 2 天后,我可以从这一步继续。
我只是在不知不觉中使用了这个,它对我有用。
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
现在,我只想知道它是如何工作的。只要在几毫秒后出现弹出窗口并且控件一直在等待 screen/overlay 来自元素可能所在的位置,这是否有效?就是想。现在很高兴,但我想确切地知道......
请指导它是如何工作的。我还不明白这一点,在所需功能的代码行下方添加,并通过评论以上 2 行访问,它成功地工作顺利并且没有显示任何错误
所以 Waqas 这是您理解您所使用的语句的答案。
那是隐含的等待。所以Implicit wait,等待元素直到找到。如果元素早于给定时间找到,则驱动程序不再等待。
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
在上面的代码中,驱动程序等待每个元素 10 秒。如果找不到元素,它会抛出一个名为 NoSuchElementException 的异常。
另一方面,我们有显式等待。等待是基于某种条件的。它一直等到条件不满足。
[在此处输入图片描述][1]我有一个应用程序会向用户显示一个弹出窗口,让用户点击是或否,具体取决于他们是否要启用或不启用指纹选项。 -当密码通过身份验证时,会自动出现一个弹出窗口,询问用户是否要启用 FINGERPRINT。
我尝试通过元素的 ID 和 xpath 定位元素,但 none 有效
driver.findElement(By.id("etEmailAddress")).sendKeys("wa@qa.xyz");
driver.findElement(By.id("btn_continue")).click();
Thread.sleep(5000);
driver.findElement(By.id("etPassword")).sendKeys("PackageX@1");
driver.findElementByXPath("//android.widget.EditText[@text='Password']").sendKeys("PackageX@1");
driver.findElement(By.id("btn_login")).click();
Thread.sleep(5000);
``` //driver.findElement(By.id("app.px.packagex:id/tvNo")).click();
//driver.findElement(By.id("tvNo")).click();
the last 2 lines above:
//driver.findElement(By.id("tvYes")).click();
//driver.findElement(By.id("app.px.packagex:id/tvNo")).click();
I tried using id for both but not working
I want to tap on either of the buttons and then I will be taken into the App where I will be able to see a list of members in the App.
Below is the image in which that pop up appear as auto when CONTINUE button is tapped after providing the password, which asks for Yes or No for FINGERPRINT.:
[enter image description here][1]
[1]: https://i.stack.imgur.com/M6tIk.jpg
所以在花了 2 天后,我可以从这一步继续。
我只是在不知不觉中使用了这个,它对我有用。
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
现在,我只想知道它是如何工作的。只要在几毫秒后出现弹出窗口并且控件一直在等待 screen/overlay 来自元素可能所在的位置,这是否有效?就是想。现在很高兴,但我想确切地知道...... 请指导它是如何工作的。我还不明白这一点,在所需功能的代码行下方添加,并通过评论以上 2 行访问,它成功地工作顺利并且没有显示任何错误
所以 Waqas 这是您理解您所使用的语句的答案。 那是隐含的等待。所以Implicit wait,等待元素直到找到。如果元素早于给定时间找到,则驱动程序不再等待。
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
在上面的代码中,驱动程序等待每个元素 10 秒。如果找不到元素,它会抛出一个名为 NoSuchElementException 的异常。
另一方面,我们有显式等待。等待是基于某种条件的。它一直等到条件不满足。