Paxml is an XML-based scripting language. It provides simple yet powerful syntax to automate your business operations that you would otherwise have to manually perform. For instance, accessing database and files, driving browsers, calling web APIs and glue all these together into your operational work flow. Most importantly it automates the repetitive part for you, drastically increasing the efficiency of your work and liberating you to do more creative work.

Therefore, Paxml is suitable for operational staff to automate business processes and for software testers to automate test executions.

Paxml is also an open source software released under Affero General Public License Version 3.0.

Taste it a bit

Here is a simple example. Suppose you have an Excel file MyExcel.xls which contains 1000 rows of English terms in column A that you want to let Google translate into German and save the translation back to column B. You can simply use the XML below to have the job done for you, iterating through all those 1000 rows and for each term open web browser to let Google translate do the work:

  <iterate file="MyExcel.xls">
    <type locator="source">${row.A}</type>
    <click locator="gt-lang-submit"/>
    <set column="B" >    
      <pick locator="result_box" timeout="5000"/>

Save the above XML as file TranslateExcel.xml then use this command to run it:

paxml TranslateExcel

Now you can start using column B which contains 1000 rows of German translation! And all steps driving the browser window are recorded as screenshots ready for your inspection.

How about software testers?

Suppose you are a tester hired by Google to test their translation website, and you use the same Excel file to store your test data where column C holds the correct German translations. You need to verify for all those 1000 translations by comparing column B and column C of every row. Then you just need to create a new XML file like below, to first call the above XML file to acquire the translations, then check if column B holds the same text as column C:

  <iterate file="MyExcel.xls" >
    <assert expected="${row.C}" actual="${row.B}" />

Save the above XML as TestTranslate.xml and run this command to launch the test:

paxml TestTranslate

Run multiple Paxml files

If you have multiple Paxml files and would like to trigger the executions of them easily, you can put the references to those files in a central place, namely a plan file. A plan file can even take dynamic inputs if you, for instance, prefer to manage the execution triggers elsewhere.

Suppose you have an Excel file Tests.xls that holds all your test case names in column D. And you have already created many Paxml files each representing a specific test case. Then you can make a plan file like below, taking such Excel as input. So that you just need to maintain the Excel file to dictate what tests need to run.

  <iterate file="Tests.xls">
    <execution scenario="${row.D}"/>

Save the above XML as file MyPlan.xml then run the following command to trigger all Excel-managed tests:

paxml MyPlan

Moreover, by default the above plan file will trigger the tests in parallel, saving a lot of execution time.


Please check the wiki pages for more amazing features and how-tos.

Authors and Contributors

Author @niuxuetao is looking for contributors. Reach me at: (at)