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