The Open Source World of Selenium - 2
Pallavi Sharma
Founder 5 Elements Learning and Mosaic Words | Published Author | Selenium Committer | Eternal Learner | Conservationist | ??? ????? | #BeKind
So how has been your week, mine was a bit more hectic than I would have liked. A few conferences review work, three to be precise, a publishing conference to physically attend to, trying to work on an upcoming talk, interviewing for a freelance project, replying to people asking for training, and just trying to meet all those deadlines for work which doesn't necessarily pay in money, but in knowledge and that is more important to me. One thing which is bringing me joy is that my first book as a publisher has finally taken a great shape, and I am feeling good knowing it would be out there in coming months..
On personal front, I am finding myself constantly forgetting things. As simple as this may sound, i forget what's cooked for lunch. When my kids ask me this question, i now need to tell them go ask your dad, or ask the maid. It just slips my mind. And no matter how hard I try it doesn't come back. Well well...guess i am getting quite old now, suddenly the forties ae hitting hard. I no longer feel stuck to the 17 mine which left home for the first time. What about you? Is there any age you feel you are stuck to in mind. Ok if you remember tell me. I like knowing random things about random people, maybe the writer in me does that. So if you are here, I assume you have read this - https://www.dhirubhai.net/pulse/open-source-world-selenium-1-pallavi-sharma-idczc/?trackingId=mNQ7RPV7QzilMBBTVYZ4WQ%3D%3D
Thank God! I finally realized what was I writing here... ok lame attempt, coming back to the topic. What I just did here was, or I tried was to break the ice, give a little warm up to this article, if you workout, you may already know what warm up, and if you don't then start. Now that's the last of it, Selenium yes that's why I am writing and you are reading this article. Selenium allows you to implement in many different programming languages. Implementing Selenium for your project needs has been made easier over the years. But mind you this wasn't the case earlier. Open source projects tend to undergo these transitions. Sometimes it takes another person to make the project better, like what the work of Boni Garcia did, and David Burns wrote an interesting article on it, with Selenium 4 we no longer have to worry about the browser drivers, which earlier wasn't the case.
This article, is an attempt to explore the different open source projects around Selenium which mention that they make Selenium implementation easier for your test automation needs. With every article in the series, we will explore different open source projects and will categories them according to the programming language, Selenium officially supports.
This one we will do for Java. So lets start. Yet again, Selenium Java Client bindings are here - https://www.selenium.dev/selenium/docs/api/java/index.html. Click on it, its ok its safe to click on this, no its ain't click bait, its information you might want to explore, specially if you are a beginner. What you see here are a list of packages, java packages. And let's say we click one - https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/package-summary.html - we see a list of classes and interfaces. And now we click one- WebDriver - https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html you can find out its an interface and information associated with it. So to understand this you should be aware of Java and the concepts of Object Oriented Programming. Test automation isn't a test problem or project. Its a development one. Creating test automation solution for your testing needs, have many stakeholders, the development team of application under test is one of them. It is a great idea to build an application with testability and observability built in.
Ok, so this page talks about some of the not all open source projects on Selenium- https://www.selenium.dev/ecosystem/. Some time back a meetup of developers of these frameworks and Selenium happened. It was done by Titus. Some of the projects will overlap, and some I have come across and found them good enough to mention here. Yet again the world of open source, gets better when correct information is shared by community. So if you come across a relevant information which may help readers of this article feel free to add in comments. Frameworks helping test automation projects built over Selenium for Java are -
a. Selenide-
Github link- https://github.com/selenide/selenide, originally developed by Andrei Solntsev, and now maintained by him and multiple contributors. That is good for any open source project. Healthy activity in project through contributors is a good indicator of project health.
Current issues- https://github.com/selenide/selenide/issues
For support - check these links- https://groups.google.com/g/selenide
Selenide, a talk on it was also done in the a few Selenium conferences, some links - https://www.youtube.com/watch?v=-KGtZoFVzr8 and https://www.youtube.com/watch?v=roL1ciaNWtY.
b. QAF-
Github link -https://github.com/qmetry/qaf, originally developed Chirag Jayswal and now maintained by him and other contributors.
Current issues -https://github.com/qmetry/qaf/issues
Insights- https://github.com/qmetry/qaf/pulse
I wasn't quickly able to find community or support channel around this project. If you know, please share.
c. FluentLenium-
Github link- https://github.com/FluentLenium/FluentLenium
领英推荐
Current issues- https://github.com/FluentLenium/FluentLenium/issues It has some good number of contributors. For support - couldn't find a separate google group or other place, but they do share an email to connect on.
With this project, as you explore any open source built over Selenium do check which version of Selenium the project is currently using as well. So beside the open source version of Selenium, you will also need to know the version of the open source framework you are using.
The benefit these open source projects bring to table are, you can build over these templates, if the way they are implemented and the problem they are mentioning to solve gels with your project needs. It is important to explore it. Important to understand the current issues, the contributors and how support looks like for the project. You can also feel motivated to get involved with these projects and help them as well.
d. SHAFT-
Github link - https://github.com/ShaftHQ/SHAFT_ENGINE, developed by Mohab Mohie and seems to have good number of contributors.
Current issues - https://github.com/ShaftHQ/SHAFT_ENGINE/issues
For support they have a slack channel, i like this - https://shaft-engine.slack.com/join/shared_invite/zt-oii5i2gg-0ZGnih_Y34NjK7QqDn01Dw#/shared-invite/email
Another thing to note with any open source framework you chose, there will be a DSL that framework is using. It is imperative to understand that. These DSL are built over the Selenium default commands, and could be combined with one or more other components. I also like the Java API documentation available for this project- https://shafthq.github.io/SHAFT_ENGINE/apidocs/index.html
By exploring this, you may also now start observing the different design patterns different frameworks are using from Page Object Model to Factory patters and others. You may also notice the default assertion library being used in projects, and one to many other open source projects that framework is built on. Example look at this for SHAFT- https://github.com/ShaftHQ/SHAFT_ENGINE/network/dependencies
A good to have test automation open source solution over Selenium could provide you a basic and working infrastructure for your test automation needs - data, objects, scripts, execution, reports, logs over and above ease of implementation. Do note it is important that you don't think about now, which means solving the problem for now, instead of reinventing the wheel build over these frameworks, you need to also see how maintainable they are. Do think of long term when exploring any open source project.
A few thoughts for learning. If you are exploring Selenium with Java as a programming language, knowing about such frameworks help. Your first stop should be Selenium Java client bindings, and understanding the default tools you will need - an unit test library like junit, testng, a project management tool like maven, many use gradle, an approach to manage objects, data, scripts and other similar artifacts. Design patterns to help you with the architecture of code, reports and logs are necessary as well. Creation of scripts, maintenance, and their execution. A crucial aspect is security, if that is a concern for your project.
Many commercial products you will also find doing all this and maybe more. So if you are learning, a great way to support your learning is exploring open source projects, learning from them, and then try and build your own solution. Another approach is contributing to these open source projects, helps in learning manifolds, and helps community as well.
With this, I end this article. I have a session to attend, for learning the world of writers, in some time. If this article helped you let me know. If you wish to add to this article, feel free to do it. I would feel happy if anyone of you feel motivated to contribute to open source, or create your own :)
Until next time folks! Stay well, and enjoy rains.
**disclaimer- views expressed are all mine, i mean if it wasn't clear, saying it better with this.