About the project#

Why such package?#

manen has been designed to keep every project using Selenium simple and to speed up the development of these projects. Working with selenium can quickly lead to non beautiful code because Selenium project often merge two functionalities:

  1. Browser interactions: This part of the code is in charge of defining how to retrieve and interact with web elements. The retrieval is done with selectors (XPath, CSS, tag name…) and once you got the elements, the next step can be to extract some attributes from these elements (a text, an integer, a timestamp, an image, a form…).

  2. Workflow definition: Clicking with some elements, filling a form, checking the value displayed: the logic here will implement the different pipelines to solve your specific use cases.

manen helps for the first functionality, the browser interactions. Each package have its own set of features:

  • finder defines a helper function allowing to easily find one or several elements in a page.

  • resource allows to download drivers needed by Selenium; no longer need to find the right drivers compatible with the installed browser, manen will do it for you!

  • page_object_model implements a quite complete list of classes you can use to easily interact with the DOM structure; it is basically an implementation of the page object model described in official documentation of Selenium.

  • browser defines new browser classes by enriching Selenium WebDriver with a BrowserMixin.

At the end, manen can be used for various use cases: testing, heavy process automation or scraping. Note that the goal behind manen is to have a production-ready tool.

Current status and roadmap#

manen is still under active development but has been used on some private projects for quite a time.

Feebacks are more than welcome so don’t hesitate to open a Github issue if you have any questions or concerns about the project!

Because manen uses semantic versioning, it will keep 0 as major version until it is ready for the first stable release.

Note

There is no guarantee that the API will remain the same. The current architecture is probably the definitive one, but some breaking changes can be introduced if needed. Any change will be detailed in the ChangeLog page.

No roadmap because it is still a “side project” but you can follow the project through this documentation and Github’s issues.

See Contributing if you want to participate to this project.