Salvare i Risultati della Scansione Localmente

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

Quando salvi i risultati delle scansioni localmente, puoi utilizzare il risultato JSON per integrare metriche di accessibilità in diversi strumenti di reporting. Puoi anche creare un report HTML da condividere via email o chat, per notificare il tuo team sulla situazione dell’accessibilità del tuo test.

Salvare i risultati localmente è supportato solo nei test automatizzati.

Salvare e Condividere i Risultati

Crea una directory 'reports' nella tua directory home dove salverai i risultati JSON. Fai riferimento agli esempi seguenti.

Ruby

require 'json'
require 'fileutils'

#
# Set up driver, capabilities and axeStartSession here before scanning
#

# Start Scan Here
scanResult = @driver.execute_script 'mobile: axeScan'

# Convert result to JSON string
json_result = JSON.pretty_generate(scanResult)

# Create timestamp for filename
timestamp = Time.now.strftime('%Y-%m-%dT%H-%M-%S')
filename = "axe-scan-result-#{timestamp}.json"

# Create reports directory
reports_dir = File.join(Dir.home, 'reports', 'axeScans')
FileUtils.mkdir_p(reports_dir)

# Save to file
filepath = File.join(reports_dir, filename)
File.write(filepath, json_result)

puts "Axe scan result saved to: #{filepath}"

JavaScript

const fs = require('fs');
const path = require('path');

//
//Set up driver, capabilities and axeStartSession here before scanning
//

// Start axeScan
const scanResult = await driver.execute('mobile: axeScan')

// Convert result to JSON string
const jsonResult = JSON.stringify(scanResult, null, 2);

// Create timestamp for filename
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
const filename = `axe-scan-result-${timestamp}.json`;

// Create reports directory
const reportsDir = path.join(require('os').homedir(), 'reports', 'axeScans');
fs.mkdirSync(reportsDir, { recursive: true });

// Save to file
const filepath = path.join(reportsDir, filename);
fs.writeFileSync(filepath, jsonResult, 'utf8');

console.log(`Axe scan result saved to: ${filepath}`);

Python

import json
from datetime import datetime
from pathlib import Path

#
# Set up driver, capabilities and axeStartSession here before scanning
#

# Start axeScan
scan_result = driver.execute_script('mobile: axeScan')

# Convert result to JSON string
json_result = json.dumps(scan_result, indent=2)

# Create timestamp for filename
timestamp = datetime.now().strftime('%Y-%m-%dT%H-%M-%S')
filename = f"axe-scan-result-{timestamp}.json"

# Create reports directory
reports_dir = Path.home() / 'reports' / 'axeScans'
reports_dir.mkdir(parents=True, exist_ok=True)

# Save to file
filepath = reports_dir / filename
filepath.write_text(json_result, encoding='utf-8')

print(f"Axe scan result saved to: {filepath}")

Java

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Map;

//
// Set up driver, capabilities and axeStartSession here before scanning
//

// Start axeScan
Object scanResult = driver.executeScript("mobile: axeScan");

// Convert result to JSON string
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonResult = gson.toJson(scanResult);

// Create timestamp for filename
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH-mm-ss");
String timestamp = LocalDateTime.now().format(formatter);
String filename = "axe-scan-result-" + timestamp + ".json";

// Create reports directory
Path reportsDir = Paths.get(System.getProperty("user.home"), "reports", "axeScans");
Files.createDirectories(reportsDir);

// Save to file
Path filepath = reportsDir.resolve(filename);
Files.write(filepath, jsonResult.getBytes());

System.out.println("Axe scan result saved to: " + filepath.toString());

Kotlin

import com.google.gson.Gson
import com.google.gson.GsonBuilder
import java.nio.file.Files
import java.nio.file.Paths
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

//
// Set up driver, capabilities and axeStartSession here before scanning
//

// Start axeScan
val scanResult = driver.executeScript("mobile: axeScan")

// Convert result to JSON string
val gson = GsonBuilder().setPrettyPrinting().create()
val jsonResult = gson.toJson(scanResult)

// Create timestamp for filename
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH-mm-ss")
val timestamp = LocalDateTime.now().format(formatter)
val filename = "axe-scan-result-$timestamp.json"

// Create reports directory
val reportsDir = Paths.get(System.getProperty("user.home"), "reports", "axeScans")
Files.createDirectories(reportsDir)

// Save to file
val filepath = reportsDir.resolve(filename)
Files.write(filepath, jsonResult.toByteArray())

println("Axe scan result saved to: $filepath")

C#

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;

//
// Set up driver, capabilities and axeStartSession here before scanning
//

// Start axeScan
var scanResult = _driver.ExecuteScript("mobile: axeScan");

// Convert result to JSON string
string jsonResult = JsonConvert.SerializeObject(scanResult, Formatting.Indented);

// Create timestamp for filename
string timestamp = DateTime.Now.ToString("yyyy-MM-ddTHH-mm-ss");
string filename = $"axe-scan-result-{timestamp}.json";

// Create reports directory
string reportsDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), 
                                "reports", "axeScans");
Directory.CreateDirectory(reportsDir);

// Save to file
string filepath = Path.Combine(reportsDir, filename);
File.WriteAllText(filepath, jsonResult);

Console.WriteLine($"Axe scan result saved to: {filepath}");

Generare un Report HTML e un Sommario

Genera un rapporto HTML per le scansioni mirate utilizzando mobile: axeGenerateHtmlReportAndSummary. Aggiungendo questo comando di esecuzione si produce un unico rapporto HTML aggregato e un riepilogo per tutte le scansioni raccolte dall'inizio della sessione, e il driver lo trasferisce dal dispositivo a una directory locale - axeHtmlReportPath. La directory predefinita è build/AxeDevToolsMobileResults per Android o ~/AxeDevToolsMobileResults/<UUID> per iOS, ma è possibile definire un percorso di output personalizzato (ad esempio ./reports/accessibility), se lo desideri. Il nome del file del rapporto predefinito è AxeAccessibilityReport, ma anche questo può essere modificato. Consulta il terzo blocco nel seguente frammento JavaScript:

// 1. Authenticate once for the session
await driver.executeScript('mobile: axeStartSession', [{
  apiKey: 'DEQUE_APIKEY',
  axeAccountURL: 'https://axe.deque.com',
}]);

// 2. Run targeted scans across the screens you care about
await driver.executeScript('mobile: axeScan', [{ scanName: 'Login screen' }]);
// ...navigate...
await driver.executeScript('mobile: axeScan', [{ scanName: 'Checkout screen' }]);

// 3. Generate a single aggregated HTML report + summary for the session
const result = await driver.executeScript('mobile: axeGenerateHtmlReportAndSummary', [{
  axeHtmlReportPath: './reports/accessibility', // optional (local dir)
  scanName: 'My Session Report',                // optional
}]);

// result.localDirectory -> local directory the report was saved into
// result.reportFiles    -> generated report file path(s) on the device

Per vedere l'implementazione di axeGenerateHtmlReportAndSummary in altri linguaggi di programmazione, puoi fare riferimento a esempi di automazione completa sia per UIAutomator2 che per XCUITest.