I am executing iOS mobile scripts using Java, Appium. Screenshot is working inconsistent. I used the following versions
iOS 16.1
Mac os: 14.0 (23A344)
Xcode: 15.0
WebDriver agent: 5.10.0
Java 1.8
Appium: 1.22.3
Capabilities:
capabilities.setCapability(“automationName”, “XCUITest”);
capabilities.setCapability(“platformName”, “iOS”);
capabilities.setCapability(“platformVersion”, platformVersion);
capabilities.setCapability(“deviceName”, deviceName);
capabilities.setCapability(“udid”, udid);
capabilities.setCapability(“bundleId”, “com.abc.mobileapp”);
capabilities.setCapability(“appActivity”, “.MainActivity”);
capabilities.setCapability(“acceptInsecureCerts”, true );
capabilities.setCapability(“autoAcceptAlerts”, true );
capabilities.setCapability(“autoDismissAlerts”, true );
capabilities.setCapability(“autoGrantPermissions”, true );
capabilities.setCapability(“systemAlertsDelayEnabled”, true );
capabilities.setCapability(“noReset”, false );
capabilities.setCapability(“fullReset”, false );
capabilities.setCapability(“autoWebview”, true );
capabilities.setCapability(“takesScreenshots”, true );
capabilities.setCapability(MobileCapabilityType. FORCE_MJSONWP , true );
capabilities.setCapability(“newCommandTimeout”, 300);
It is capturing screenshot sometimes and working sometime, due to that unable to find the exact issue
Code:
public boolean getScreenshotForLog(IOSDriver driver, ExtentTest logger, String name) {
try {
logger.addScreenCaptureFromBase64String(
“data:image/png;base64,” + ((TakesScreenshot) driver).getScreenshotAs(OutputType. BASE64 ),
name+ timeStamp());
logger.info(“ScreenshotCaptured success”);
return true ;
} catch (Exception e) {
try {
String path = ScreenShotUtils. getScreenShotAsFile (driver, Constants. SCREENSHOTS_PATH + name);
logger.info(“screenshot Path is :” + path);
logger.addScreenCaptureFromPath(path, “afterLogin”);
} catch (Exception e2) {
logger.info(“ScreenshotCapturing failed at second time also:” + e.getMessage().toString());
}
return false ;
}
}
reusable:
public static String getScreenShotAsFile(IOSDriver driver,String name) {
File file;
String screenShotName = name+"_"+BasePage. timeStamp2 ()+".png";
try {
file = ((TakesScreenshot) driver).getScreenshotAs(OutputType. FILE );
FileUtils. copyFile (file, new File(screenShotName));
} catch (IOException e1) {
e1.printStackTrace();
}
}
Exception is:
ScreenshotCapturing failed: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: connect ECONNREFUSED 127.0.0.1:8100 (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 0 milliseconds Build info: version: ‘3.141.59’, revision: ‘e82be7d358’, time: ‘2018-11-14T08:17:03’ System info: host: ‘C02FFJUZMD6M’, ip: ‘2401:4900:4d07:2495:fd98:d37e:83af:32ce%en0’, os.name: ‘Mac OS X’, os.arch: ‘x86_64’, os.version: ‘14.0’, java.version: ‘1.8.0_381’ Driver info: io.appium.java_client.ios.IOSDriver Capabilities {acceptInsecureCerts: true, appActivity: .MainActivity, autoAcceptAlerts: true, autoDismissAlerts: true, autoGrantPermissions: true, autoWebview: true, automationName: XCUITest, browserName: , bundleId: com.abc.mobileapp, databaseEnabled: false, deviceName: IPhoneAuto, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: false, newCommandTimeout: 300, noReset: false, platform: MAC, platformName: iOS, platformVersion: 16.1, resetKeyboard: true, systemAlertsDelayEnabled: true, takesScreenshot: true, takesScreenshots: true, udid: 00008020-000375683C84003A, webStorageEnabled: false} Session ID: e55533eb-b70f-4c02-84ea-1925e87fcc14
Thanks in Advance for you response.