java.io.FileNotFoundException (доступ запрещен) ошибка при захвате скриншота в селене - PullRequest
0 голосов
/ 10 октября 2019

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

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

в 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) в тестах. ScreenshotTest.takeScreenshot (ScreenshotTest.java:29) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (неизвестныйrce) at sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник) в java.lang.reflect.Method.invoke (Неизвестный источник) по адресу org.testng.internal.MethodInvocationHelper.invokeMethod (MethodInvocationHelg.jerperj). internal.Invoker.invokeMethod (Invoker.java:583) в org.testng.internal.Invoker.invokeTestMethod (Invoker.java:719) в org.testng.internal.Invoker.invokeTestMethods (Invoker.java:989) в org.test.internal.TestMethodWorker.invokeTestMethods (TestMethodWorker.java:125) в org.testng.internal.TestMethodWorker.run (TestMethodWorker.java:109) в org.testng.TestRunner.privateRj. ortest. org. TestTestRunner.run (TestRunner.java:505) в org.testng.SuiteRunner.runTest (SuiteRunner.java:455) в org.testng.SuiteRunner.runSequentially (SuiteRunner.java:450) в org.testng.SuiteRunner.priate.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.runSuitesSequentially (TestNG.java:1208) в org.testng.TestNG.runSuitesLocally (TestNG.java:1137) в org.testng.TestNGGun.java: 1049) в org.testng.TestNG.run (TestNG.java:1017) в org.testng.remote.AbstractRemoteTestNG.run (AbstractRemoteTestNG.java:115) в org.testng.remote.RemoteTestNG.initAndRun. java: 251) at org.testng.remote.RemoteTestNG.main (RemoteTestNG.java:77)

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

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

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

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

1 Ответ

0 голосов
/ 10 октября 2019

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

<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);
        }
    }
}
...