简体   繁体   English

尝试接受 Appium/Android 7/Java 弹出的位置权限

[英]Trying to accept location permission pop up with Appium/Android 7/Java

I am using Appium 1.6.3 and a Google Pixel with Android 7.1.1.我正在使用 Appium 1.6.3 和带有 Android 7.1.1 的 Google Pixel。

I am trying to load the Waze app which is already installed on the phone and accept the initial location permission request.我正在尝试加载已安装在手机上的 Waze 应用程序并接受初始位置权限请求。

I have tried the following:我尝试了以下方法:

capabilities.setCapability("autoGrantPermissions", "true");

Also:还:

capabilities.SetCapability("autoAcceptAlerts", true);

But these doesn't seem to do the trick.但这些似乎都不起作用。

I have read on other sites, that the auto granting of permission is only available on iOS?我在其他网站上读过,自动授予权限仅在 iOS 上可用?

The code I have currently:我目前拥有的代码:

import io.appium.java_client.MobileBy;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.html5.Location;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class mapTests {
    AndroidDriver driver;
    Dimension size;
    String destDir;
    DateFormat dateFormat;

    @BeforeTest
    public void setup() throws Exception{
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName", "FA6C90301474");
        capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
        capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "7.1.1");
        capabilities.setCapability("appPackage", "com.waze");
        capabilities.setCapability("appActivity", "com.waze.FreeMapAppActivity");
        capabilities.setCapability("noSign", true);
        capabilities.setCapability("autoGrantPermissions", "true");
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    }

    @Test
    public void testOne()throws Exception {
        Location location = new Location(53.7775174,-1.800881200000049,224);
        driver.setLocation(location);
        takeScreenShot();
    }

    public void takeScreenShot() {
        destDir = "screenshots";
        File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        dateFormat = new SimpleDateFormat("dd-MMM-yyyy__hh_mm_ssaa");
        new File(destDir).mkdirs();
        String destFile = dateFormat.format(new Date()) + ".png";

        try {
            FileUtils.copyFile(scrFile, new File(destDir + "/" + destFile));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @AfterTest
    public void tearDown() throws Exception{
        driver.quit();
    }
}

Thank you!谢谢!

Actually, I have found an solution to my problem:实际上,我已经找到了解决我的问题的方法:

WebElement allow_location = driver.findElement(By.id("com.android.packageinstaller:id/permission_allow_button"));
allow_location.click();
Thread.sleep(1000);

This works a charm!这很有魅力!

Try to use:尝试使用:

driver.switchTo().alert().accept();

or或者

driver.switchTo().alert().dismiss();

And don't forget to wait until the alert is present and then click on it.并且不要忘记等到警报出现然后单击它。

This capabilities worked for me:此功能对我有用:

caps = {}
caps[“platformName”] = "Android"
caps[“platformVersion”] = "7.0"
caps[“deviceName”] = "Pixel_C_API_24"
caps[“automationName”] = "UiAutomator2"
caps[“app”] = "/home/tests/app-debug.apk"
caps[“noReset”] = False
caps[“autoGrantPermissions”] = True
caps[“appPackage”] = "com.mypackage"
caps[“appActivity”] = “.MyActivity”

Regards.问候。

尝试使用 AndroidMobileCapabilityType。它将启用 apk 所需的所有权限。

capabilities.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS, "true");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 无法在appium中单击权限弹出窗口(访问联系人列表) - Not able to click on permission pop-up (Access Contact List) in appium 如何处理适用于OS Marshmallow及更高版本的Appium android测试中的App权限弹出窗口(系统弹出窗口,例如设备位置/联系人列表)? - How to handle App permission pop ups (system popups like device location/contact list) in Appium android tests for OS Marshmallow and above? 在没有 appium 驱动程序实例的情况下使用 appium 在 ios 中接受一个弹出对话框 - Accept a pop up dialog in ios using appium without having the appium driver instance 尝试在 Android Studio (Java) 中制作弹出窗口/叠加层 - Trying to Make Pop-Up Window/Overlay in Android Studio (Java) 如何在 webview android java 中禁用 cookie 弹出? 有什么方法可以阻止这个弹出窗口或在后台默认接受 cookie - how to disable cookie pop up in webview android java? is there any way to block this pop up or accept cookie by default in background 无法在 Android 应用程序中找到自动警报弹出的 appium 中的元素 - Unable to locate elements in appium for auto alert pop up in Android App 使用Appium处理android应用中的弹出窗口 - Handling pop-up in android app using Appium Web应用程序中的Appium:无法在通知弹出窗口中点击“允许权限”按钮 - Appium in Web app: Unable to tap Allow permission button in notification pop up window JAVA - 在没有文件名/位置弹出的情况下打印XPS - JAVA - Printing XPS without File Name/Location Pop-up 在Android中使用Appium无法单击设备的位置许可对话框“允许/拒绝”按钮 - Unable to click device's location permission dialog Allow/Deny button in Android using Appium
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM