Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/conductor-framework/conductor
The Selenium framework that takes you where you want to go
https://github.com/conductor-framework/conductor
Last synced: 3 months ago
JSON representation
The Selenium framework that takes you where you want to go
- Host: GitHub
- URL: https://github.com/conductor-framework/conductor
- Owner: conductor-framework
- License: apache-2.0
- Created: 2014-10-08T21:26:17.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2023-09-08T16:51:50.000Z (about 1 year ago)
- Last Synced: 2023-12-20T12:27:19.184Z (11 months ago)
- Language: Java
- Homepage: http://conductor.ddavison.io
- Size: 21.6 MB
- Stars: 96
- Watchers: 14
- Forks: 44
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-selenium - Conductor - Turbo-boosted Selenium framework that makes test writing a breeze. (Resources / Tools)
README
Conductor
===
[See the site](http://conductor.ddavison.io)[![star](http://githubbadges.com/star.svg?user=conductor-framework&repo=conductor)](http://github.com/conductor-framework/conductor)
[![fork](http://githubbadges.com/fork.svg?user=conductor-framework&repo=conductor)](http://github.com/conductor-framework/conductor/fork)# Getting Started
Using maven, include it as a dependency:
```xmlio.ddavison
conductor
3.0.2```
Create a Java Class, and extend it from `io.ddavison.conductor.Locomotive`
### Drivers
Drivers should be put in the resources folder of your project in a subdirectory called drivers, and be named like this:#### Mac
chromedriver-mac-32bit#### Windows
chromedriver-windows-32bit.exe#### Linux
chromedriver-linux-32bitSo as an example, your project structure could be:
```
Project
| src
| main
| java
| TestClass.java
| resources
| drivers
| chromedriver-mac-32bit
| chromedriver-windows-32bit.exe
| chromedriver-linux-32bit
| pom.xml
```Currently, six browsers are supported and they are Firefox, HTMLUnit, Chrome, Internet Explorer, Safari, and PhantomJS
# Goals
The primary goals of this project are to...
- Take advantage of method chaining, to create a fluent interface.
- Abstract the programmer from bloated scripts resulting from using too many css selectors, and too much code.
- Provide a quick and easy framework in Selenium 2 using Java, to get started writing scripts.
- Provide a free to use framework for any starting enterprise, or individual programmer.
- Utilize the power of CSS!# Actions
You can perform any action that you could possibly do, using the inline actions.
- ```click(By)```
- ```setText(By, text)```
- ```getText(By)```
- ```hoverOver(By)```
- ```check(By)```
- ```uncheck(By)```
- ```navigateTo(url)```
- ```goBack()```
- ```isPresent(By)```
- ```getAttribute(By, attribute)```
- etc.# In-line validations
This is one of the most important features that I want to _*accentuate*_.
- ```validateText```
- ```validateTextNot```
- ```validateChecked```
- ```validateUnchecked```
- ```validatePresent```
- ```validateNotPresent```
- ```validateTextPresent```
- ```validateTextNotPresent```All of these methods are able to be called in-line, and fluently without ever having to break your tests.
# Switching Windows
Another nice feature that is offered, is the simplicity of window switching in Selenium.- ```switchToWindow(regex)```
- ```waitForWindow(regex)```
- ```closeWindow(regex)```All of these functions take a regular expression argument, and match either the url or title of the window that you want to interact with.
# Switching Frames
- ```switchToFrame(idOrName)```
- ```switchToDefaultContent()```# Implicit Waiting
In addition to the Selenium 2 implicit waiting, the ```AutomationTest``` class extends on this concept by implenting a sort of ```waitFor``` functionality which ensures that an object appears before interacting with it. This rids of most ```ElementNotFound``` exceptions that Selenium will cough up.[See a working example](https://github.com/ddavison/conductor/blob/master/src/test/java/io/ddavison/conductor/FrameworkTest.java) of what a test script written using this framework might look like.
# Pull requests
If you have an idea for the framework, fork it and submit a pull-request!