{"id":30820845,"url":"https://github.com/coedotzmagic/drivebydataxcel","last_synced_at":"2026-05-15T22:37:52.661Z","repository":{"id":311289363,"uuid":"1043442271","full_name":"CoedotzMagic/DriveByDataXCel","owner":"CoedotzMagic","description":"DriveByDataXCel is a data-driven testing plugin that reads Excel files and maps them into structured data for use in Selenium, Katalon, and other automation frameworks.","archived":false,"fork":false,"pushed_at":"2025-08-23T23:05:50.000Z","size":26,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-24T01:49:32.123Z","etag":null,"topics":["automation","automation-testing","automation-tools","coedotzmagic","data-driven","data-driven-testing","excel","java","katalon","plugin","selenium"],"latest_commit_sha":null,"homepage":"https://coedotzmagic.com/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CoedotzMagic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-23T21:32:52.000Z","updated_at":"2025-08-23T23:06:42.000Z","dependencies_parsed_at":"2025-08-24T01:53:59.656Z","dependency_job_id":"dbc03ac8-c89e-44e3-842d-5fce1e414cf1","html_url":"https://github.com/CoedotzMagic/DriveByDataXCel","commit_stats":null,"previous_names":["coedotzmagic/drivebydataxcel"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/CoedotzMagic/DriveByDataXCel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoedotzMagic%2FDriveByDataXCel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoedotzMagic%2FDriveByDataXCel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoedotzMagic%2FDriveByDataXCel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoedotzMagic%2FDriveByDataXCel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CoedotzMagic","download_url":"https://codeload.github.com/CoedotzMagic/DriveByDataXCel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoedotzMagic%2FDriveByDataXCel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273887903,"owners_count":25185772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","automation-testing","automation-tools","coedotzmagic","data-driven","data-driven-testing","excel","java","katalon","plugin","selenium"],"created_at":"2025-09-06T10:03:17.732Z","updated_at":"2026-05-15T22:37:52.621Z","avatar_url":"https://github.com/CoedotzMagic.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DriveByDataXCel\nDriveByDataXCel is a lightweight, flexible plugin designed for automation testing tools like Selenium, Katalon, and others, enabling seamless data-driven testing using Excel (.xlsx) files. It reads structured data from Excel, maps it into an array of key-value pairs (array of map), and feeds the data into your automation scripts for reliable and repeatable test execution.\n\nWhether you're managing test inputs, form submissions, or multiple test cases with dynamic data, DriveByDataXCel simplifies the process of integrating Excel-based test data into your automated workflows.\n\n# Key Features\n📄 Reads Excel (.xlsx) files and parses them into an array of maps\n\n🔄 Supports data-driven testing with tools like Selenium, Katalon, WebDriver, etc.\n\n⚡ Improves test reusability by separating test logic and test data\n\n🔌 Easy integration into existing automation frameworks or CI/CD pipelines\n\n🖥️ Cross-platform support (Windows, macOS, Linux)\n\n# Use Case Examples\n- Fill web forms using Excel data in Selenium\n- Loop through multiple test cases using different Excel rows\n- Parameterize test inputs in Katalon using structured Excel maps\n- Use Excel as an external test data provider for consistent automation\n\n# How to Use\n## General Use\n```java\nString filePath = \"testingDataDriven.xlsx\"; // target file, must specify full path\nString sheetName = \"Sheet1\"; // name of the sheet to access\n\nList\u003cMap\u003cString, String\u003e\u003e testData = DriveByDataXCel.readTestDataFromExcel(filePath, sheetName);\n\nint rowNum = 1;\nfor (Map\u003cString, String\u003e row : testData) {\n    if (isRowValid(row, rowNum)) {\n      System.out.println(\"Username: \" + row.get(\"username\"));\n      System.out.println(\"Password: \" + row.get(\"password\"));\n    } else {\n      System.out.println(\"[Warning] Skipping row \" + rowNum + \" due to missing or empty fields.\");\n    }\n    rowNum++;\n}\n\nprivate boolean isRowValid(Map\u003cString, String\u003e row, int rowNum) {\n    String[] requiredFields = {\"username\", \"password\"};\n\n        for (String field : requiredFields) {\n            String value = row.get(field);\n            if (value == null || value.trim().isEmpty()) {\n                System.err.println(\"[Error] Missing or empty value for '\" + field + \"' in row \" + rowNum);\n                return false;\n            }\n        }\n        return true;\n    }\n```\n\n## TestNG / Unit Test\n#### DataDrivenProvider.java\n\n```java\nimport com.coedotzmagic.drivebydataxcel.DriveByDataXCel;\n\nString filePath = \"testingDataDriven.xlsx\"; // target file, must specify full path\nString sheetName = \"Sheet1\"; // name of the sheet to access\n\npublic class DataDrivenProvider {\n\n    public static Object[][] getDataFromExcel(String filePath, String sheetName) {\n    List\u003cMap\u003cString, String\u003e\u003e testData = DriveByDataXCel.readTestDataFromExcel(filePath, sheetName);\n\n    List\u003cMap\u003cString, String\u003e\u003e validData = new ArrayList\u003c\u003e();\n    int rowNum = 1;\n\n    for (Map\u003cString, String\u003e row : testData) {\n        if (isRowValid(row, rowNum)) {\n            validData.add(row);\n        } else {\n            System.out.println(\"[Warning] Skipping row \" + rowNum + \" due to missing or empty fields.\");\n        }\n        rowNum++;\n    }\n\n    Object[][] data = new Object[validData.size()][1];\n    for (int i = 0; i \u003c validData.size(); i++) {\n        data[i][0] = validData.get(i);\n    }\n\n    return data;\n}\n\nprivate static boolean isRowValid(Map\u003cString, String\u003e row, int rowNum) {\n    String[] requiredFields = {\"username\", \"password\"};\n\n    for (String field : requiredFields) {\n        String value = row.get(field);\n        if (value == null || value.trim().isEmpty()) {\n            System.err.println(\"[Error] Missing or empty value for '\" + field + \"' in row \" + rowNum);\n            return false;\n        }\n    }\n    return true;\n}\n\n    @DataProvider(name = \"TestData\")\n    public static Object[][] getTestData() {\n        return getDataFromExcel(filePath, sheetName);\n    }\n}\n```\n#### File Testing\n```java\n@Test(priority = 1, dataProvider = \"TestData\", dataProviderClass = DataDrivenProvider.class)\npublic void ExecuteTest(Map\u003cString, String\u003e data) throws Exception {\n    System.out.println(\"Username: \" + data.get(\"username\"));\n    System.out.println(\"Password: \" + data.get(\"password\"));\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoedotzmagic%2Fdrivebydataxcel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoedotzmagic%2Fdrivebydataxcel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoedotzmagic%2Fdrivebydataxcel/lists"}