2017年1月5日星期四

如何在Appium Test中处理应用程序权限弹出窗口

我们面临的这一问题是应用程序显示应用程序允许用户允许或拒绝的权限弹出窗口的MarShmAllow Android设备。要在我们的自动化测试用例中处理此内容。所以这篇文章将解释我们如何用简单的代码处理这个问题。
考虑我们有一个移动应用程序,要求在启动时要求所有必需的权限,我们每次显示应用程序权限弹出窗口时都需要点击允许按钮。


检查下面的测试案例,我们正在呼叫的例子 allowapppermission() 单击每个应用程序权限弹出窗口的方法。让我们了解该方法的内部工作原理。在此方法中,我们添加了一段时间,直到我们获得允许应用程序权限按钮。要找到允许按钮,我们使用了最近Appium Java客户端提供的MobileBy API。

视频教程 -

 




import java.net.MalformedURLException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

import org.junit.After;
import org.junit.Before;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;



public class WaitTests {

 WebDriver driver;

 @Before
 public void setUp() throws MalformedURLException {
  
  DesiredCapabilities capabilities = new DesiredCapabilities();
  capabilities.setCapability("deviceName", "XT1562");
  capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android");
  capabilities.setCapability(CapabilityType.VERSION, "6.0.1");
  capabilities.setCapability("platformName", "Android");
  driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
  driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
  
  
 }

 @Test
 public void testFirst() {
  
   alllowAppPermission();
   driver.findElement(By.name("Login")).click();
   driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); 
}

@After
 public void End() {
  driver.quit();
 }
public void allowAppPermission(){
 while (driver.findElements(MobileBy.xpath("// * [@ class ='Android.Widget.Button.'][2]")).size()>0) 

 {  driver.findElement(MobileBy.xpath("// * [@ class ='Android.Widget.Button.'][2]")).click();
 }
}
 

}

希望这个对你有帮助。请在下面的评论部分分享您的反馈,并在社交媒体上关注我的最新媒体更新。

16评论:

  1. 该评论已被博客管理员删除。

    回复删除
  2. 嗨......我在我的项目中使用的代码不起作用..请帮助。

    回复删除
  3. 根据我根据警报出现在屏幕上的方法alaventapppermission()。如果您必须添加几乎没有的等待时间来获取元素。
    如果它不起作用。请验证上述定位器是否正常工作。

    回复删除
  4. 嗨接受所有应用程序权限,我可以't在下一个窗口中导航,您有什么想法为什么?

    回复删除
  5. 你好,
    对于我的案子,'移动性无法解决'生成错误。请帮忙

    回复删除
  6. 使用所需的能力.......
    能力。安全性("autoGrantPermissions", 真的);它在标签和移动设备中适用于我。

    回复删除
  7. 我在平板电脑设备上使用Appium自动化WebApplication。我们正在使用Google地图,因为我打开浏览器并访问URL,我将弹出位置访问允许或阻止,但我无法通过Selenium代码对该弹出窗口进行任何操作。你能帮我解决解决方案吗?

    回复删除
  8. 尝试在此代码上添加适当等待。

    回复删除
  9. 嗨,我正在使用Protractor来运行我的Web应用程序。当我尝试上传文件时,允许拒绝弹出窗口来访问摄像头。我尝试过"autoGrantPermissions",真实,但这并没有帮助我。我也无法找到弹出窗口。你能帮我解决解决方案吗?

    回复删除
  10. 嗨,我需要对此代码的一个小说法

    driver.findeLements(mobileby.xpath("//*[@class='Android.Widget.Button.'][2]")

    因为你允许两个弹出窗口'S这样你使用按钮[2],在我的情况下只有一个弹出窗口,所以我用了nt使用[2],但它在循环中连续运行。它没有出来。

    回复删除
  11. 嗨Anuja.
    非常好的教程。我能够关闭警报消息,但现在我的脚本不会继续。单击允许按钮后,它们被卡住了。

    回复删除
  12. 请添加此功能,它将解决问题。

    能力。安全性("autoGrantPermissions", "true");
    能力。安全性("autoAcceptAlerts", "true");

    回复删除
  13. 我们可以从中取得答案吗?

    回复删除
  14. 谢谢,这有助于。

    回复删除
  15. 我总是欣赏你的工作,你的创作绝对是独一无二的。做得好

    拉斯穆森学生门户网站

    回复删除