java.io.FileNotFoundException (Доступ запрещен) ошибка при захвате снимка экрана в селене

Ниже приведена ошибка, возникающая при запуске сценария для захвата снимка экрана в selenium webdriver с использованием Java.

[RemoteTestNG] обнаружил TestNG версии 6.14.3. Запуск ChromeDriver 76.0.3809.126 (d80a294506b4c9d18015e755cee48f953ddc3f2f-refs/branch-heads/3809@{#1024}) на порту 16655 Разрешены только локальные подключения. Защитите порты, используемые ChromeDriver и соответствующими тестовыми платформами, чтобы предотвратить доступ вредоносного кода. [1570714638.101][ВНИМАНИЕ]: эта версия ChromeDriver не тестировалась с Chrome версии 77. [1570714640.126][ВНИМАНИЕ]: время ожидания подключения к Chrome истекло, повторная попытка... 10 октября 2019 г., 19:07:22 org.openqa.selenium.remote.ProtocolHandshake createSession ИНФОРМАЦИЯ: Обнаруженный диалект: W3C [1570714645.280][ПРЕДУПРЕЖДЕНИЕ]: Превышено время ожидания подключения к Chrome, повторная попытка... FAILED: takeScreenshot java.io.FileNotFoundException: C: \ Users \ share \ OneDrive \ Desktop \ Скриншоты (Доступ запрещен)

в java.io.FileOutputStream.open0(собственный метод) в java.io.FileOutputStream.open(неизвестный источник) в java.io.FileOutputStream.(неизвестный источник) в java.io.FileOutputStream.(неизвестный источник) в org.openqa.selenium.io.FileHandler.copyFile(FileHandler.java:138) в org.openqa.selenium.io.FileHandler.copy(FileHandler.java:117) в tests.ScreenshotTest.takeScreenshot(ScreenshotTest.java:29) на солнце. Reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke(неизвестный источник) в java.lang.reflect.Method.invoke(или testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124) в org.testng.internal.Invoker.invokeMethod(Invoker.java:583) на org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719) на org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989) на org.testng.internal.TestMethodWorker.javads (TestMethodWorker.java.:125) на org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) на org.testng.TestRunner.privateRun(TestRunner.java:648) на org.testng.TestRunner.run(TestRunner.java:505) в org.testng.SuiteRunner.runTest(SuiteRunner.java:455) в org.testng.SuiteRunner.runSequential(SuiteRunner.java:450) в org.testng.SuiteRunner.privateRun(SuiteRunner.java:415) в org.testng.SuiteRunner.run(SuiteRunner.java:364) на org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) на org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84) на org.testng.TestNG.runSuites Последовательно (TestNG.java:1208) в org.testng.TestNG.runSuites Локально (TestNG.java:1137) в org.testng.TestNG.runSuites(TestNG.java:1049) в org.testng.TestNG.run(TestNG.java:1017) в org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115) в org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) в org.testng.remote.Remote. RemoteTestNG.java:77)java: 77)java: 77)

=============================================== Тест по умолчанию

Выполненные тесты: 1, отказы: 1, пропуски: 0

=============================================== Набор по умолчанию

Всего выполненных тестов: 1, сбоев: 1, пропусков: 0

1 ответ

Добавьте это в свой манифест

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

А затем запросите разрешения в приложении, например, так

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        if(requestCode == REQUEST_CAMERA){
            if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED){
                try {
                   getImageFromCamera();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            else{
                Toasty.error(getApplicationContext(), "Permission Needed.", Toast.LENGTH_LONG).show();
            }
        }
        else {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
        if(requestCode == PICK_IMAGE){
            if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED){
              getImageFromGallery();
            }
            else{
                Toasty.error(getApplicationContext(), "Permission Needed.", Toast.LENGTH_LONG).show();
            }
        }
        else {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
}
Другие вопросы по тегам