{"id":328863,"url":"https://github.com/conductor-framework/conductor","last_synced_at":"2026-01-11T17:05:20.112Z","repository":{"id":21641063,"uuid":"24961718","full_name":"conductor-framework/conductor","owner":"conductor-framework","description":"[NO LONGER MAINTAINED] The Selenium framework that takes you where you want to go","archived":false,"fork":false,"pushed_at":"2025-12-19T22:58:16.000Z","size":22649,"stargazers_count":98,"open_issues_count":14,"forks_count":40,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-12-31T05:19:22.806Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/conductor-framework.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2014-10-08T21:26:17.000Z","updated_at":"2025-10-01T15:32:03.000Z","dependencies_parsed_at":"2025-08-18T03:40:20.828Z","dependency_job_id":null,"html_url":"https://github.com/conductor-framework/conductor","commit_stats":null,"previous_names":["ddavison/getting-started-with-selenium-framework","ddavison/conductor"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/conductor-framework/conductor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conductor-framework%2Fconductor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conductor-framework%2Fconductor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conductor-framework%2Fconductor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conductor-framework%2Fconductor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/conductor-framework","download_url":"https://codeload.github.com/conductor-framework/conductor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conductor-framework%2Fconductor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28314264,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T14:58:17.114Z","status":"ssl_error","status_checked_at":"2026-01-11T14:55:53.580Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-01-07T09:12:36.681Z","updated_at":"2026-01-11T17:05:20.090Z","avatar_url":"https://github.com/conductor-framework.png","language":"Java","funding_links":[],"categories":["Resources","测试"],"sub_categories":["Tools"],"readme":"Conductor\n===\n[See the site](http://conductor.ddavison.io)\n\n[![star](http://githubbadges.com/star.svg?user=conductor-framework\u0026repo=conductor)](http://github.com/conductor-framework/conductor)\n[![fork](http://githubbadges.com/fork.svg?user=conductor-framework\u0026repo=conductor)](http://github.com/conductor-framework/conductor/fork)\n\n# Getting Started\nUsing maven, include it as a dependency:\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.ddavison\u003c/groupId\u003e\n  \u003cartifactId\u003econductor\u003c/artifactId\u003e\n  \u003cversion\u003e3.0.2\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nCreate a Java Class, and extend it from `io.ddavison.conductor.Locomotive`\n\n### Drivers\nDrivers should be put in the resources folder of your project in a subdirectory called drivers, and be named like this:\n\n#### Mac\nchromedriver-mac-32bit\n\n#### Windows\nchromedriver-windows-32bit.exe\n\n#### Linux\nchromedriver-linux-32bit\n\nSo as an example, your project structure could be:\n```\nProject\n| src\n|   main\n|     java\n|       TestClass.java\n|     resources\n|       drivers\n|         chromedriver-mac-32bit\n|         chromedriver-windows-32bit.exe\n|         chromedriver-linux-32bit\n| pom.xml\n```\n\nCurrently, six browsers are supported and they are Firefox, HTMLUnit, Chrome, Internet Explorer, Safari, and PhantomJS\n\n\n# Goals\nThe primary goals of this project are to...\n- Take advantage of method chaining, to create a fluent interface.\n- Abstract the programmer from bloated scripts resulting from using too many css selectors, and too much code.\n- Provide a quick and easy framework in Selenium 2 using Java, to get started writing scripts.\n- Provide a free to use framework for any starting enterprise, or individual programmer.\n- Utilize the power of CSS!\n\n# Actions\nYou can perform any action that you could possibly do, using the inline actions.\n- ```click(By)```\n- ```setText(By, text)```\n- ```getText(By)```\n- ```hoverOver(By)```\n- ```check(By)```\n- ```uncheck(By)```\n- ```navigateTo(url)```\n- ```goBack()```\n- ```isPresent(By)```\n- ```getAttribute(By, attribute)```\n- etc.\n\n# In-line validations\nThis is one of the most important features that I want to _*accentuate*_.\n- ```validateText```\n- ```validateTextNot```\n- ```validateChecked```\n- ```validateUnchecked```\n- ```validatePresent```\n- ```validateNotPresent```\n- ```validateTextPresent```\n- ```validateTextNotPresent```\n\nAll of these methods are able to be called in-line, and fluently without ever having to break your tests.\n\n# Switching Windows\nAnother nice feature that is offered, is the simplicity of window switching in Selenium.\n\n- ```switchToWindow(regex)```\n- ```waitForWindow(regex)```\n- ```closeWindow(regex)```\n\nAll of these functions take a regular expression argument, and match either the url or title of the window that you want to interact with.\n\n# Switching Frames\n- ```switchToFrame(idOrName)```\n- ```switchToDefaultContent()```\n\n# Implicit Waiting\nIn 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.\n\n\n[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.\n\n# Pull requests\nIf you have an idea for the framework, fork it and submit a pull-request!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconductor-framework%2Fconductor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconductor-framework%2Fconductor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconductor-framework%2Fconductor/lists"}