{"_id":"34","_rev":"7-70c252a099c946fa45e178aaf2aa6f4f","name":"34","description":"Yet another Selenium WebDriver library","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"34","version":"0.0.1","description":"Yet another Selenium WebDriver library","author":{"name":"Jason Huggins","email":"jrhuggins@gmail.com"},"keywords":["selenium","webdriver","sync","automation","testing"],"homepage":"https://github.com/hugs/34","repository":{"type":"git","url":"https://github.com/hugs/34.git"},"engines":{"node":"*"},"bugs":{"url":"https://github.com/hugs/34/issues"},"license":"MIT","_id":"34@0.0.1","_shasum":"54e9cde5aee25020d9e0f4a74b84c1613465fe5d","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"hugs","email":"jrhuggins@gmail.com"},"maintainers":[{"name":"hugs","email":"jrhuggins@gmail.com"}],"dist":{"shasum":"54e9cde5aee25020d9e0f4a74b84c1613465fe5d","tarball":"https://registry.npmjs.org/34/-/34-0.0.1.tgz","integrity":"sha512-02XpGVLCmXL+DF/upgBuCNjIahi6mWwXIbUZRPvN90iLTFR0hVSuhBOiscGSA8VN7z1WnFCy9kU+6t9St1fYYg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG69USCCcKDo0ehMSHYo+vPLE+mmq8VWc7GVxEF56bXSAiAcgYc6Fa/VMC0AUIx3Lak2/Kd7wcN9bigrCN5mLAJoww=="}]}},"0.0.2":{"name":"34","version":"0.0.2","description":"Yet another Selenium WebDriver library","author":{"name":"Jason Huggins","email":"jrhuggins@gmail.com"},"keywords":["selenium","webdriver","sync","automation","testing"],"homepage":"https://github.com/hugs/34","repository":{"type":"git","url":"https://github.com/hugs/34.git"},"engines":{"node":"*"},"bugs":{"url":"https://github.com/hugs/34/issues"},"license":"MIT","_id":"34@0.0.2","_shasum":"224ccb10d13a4213acf3e3e2ea2d71ee6fdfe1ca","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"hugs","email":"jrhuggins@gmail.com"},"maintainers":[{"name":"hugs","email":"jrhuggins@gmail.com"}],"dist":{"shasum":"224ccb10d13a4213acf3e3e2ea2d71ee6fdfe1ca","tarball":"https://registry.npmjs.org/34/-/34-0.0.2.tgz","integrity":"sha512-ap4MFOn+EAcIdxPPJUdnNs1XINd7gUMOvhs0Kh1Ye7LQylmUdkVeR19xpCF1mKPG6FLMRQMaGhegm0uXnVbdsQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQzpLmPk3goc1HKLtEqmoQErOwWwh0W8xTwrY+sp0GiwIgYmM3W7wrHoviczHlyh5Mz3v9ViyaFtx7I3bViX0D3YM="}]}}},"readme":"34.js\n=====\n\nYet another Selenium WebDriver library for Node...\n\n(Warning: This is a design doc... There's no code, yet! But when it lands, it'll most likely be based on [webdriver-http-sync](https://github.com/groupon-testium/webdriver-http-sync).\n\n### Goals:\n\n  - JavaScripty - This should feel like a JavaScript API, not a port from Java\n  - For automating web browsers: desktop *and* mobile\n  - Synchronous API - Async makes no sense for shell scripts or user interface test automation.\n  - Try to reduce locator strategy proliferation. Use CSS selectors as much as possible.\n  - Optimize for interactive exploration at the console.\n   - Yeah:\n      - Pithy property names FTW\n      - Easy discovery of properties via tab completion in the console.\n      - e.g. thing.frobulate\n   - Boo:\n      - e.g. driver.window().getFrobulateStatusOfThing(By.whyAmIStillTyping())\n\n### Non-Goals:\n  - Automating non-web native apps. (Although I hope this is temporary!)\n\n<hr>\n\n### Install\n\n    npm install 34\n\n### Example Usage\n\n    Driver = require('34').Driver\n    se = new Driver()\n\n\n### API\n\n\n    // Navigation\n    // ----------\n\n    // Open a URL\n    se.url = 'http://google.com'\n    se.open = function(url) { return this.url = url }\n    se.go = se.open\n\n    se.back()\n    se.forward()\n    se.refresh()\n\n    // Close current window\n    se.close()\n\n    // End current session\n    se.quit()\n\n\n    // Frame Navigation\n\n    // Switch focus to frame\n    se('#IdOfSomeFrame').focus()\n\n    // Switch focus to parent frame\n    se.parent()\n\n\n    // Window Navigation\n\n    // Switch focus to window\n    se.window('nameOfWindow')\n\n\n\n    // Interrogation\n    // -------------\n\n    // Driver\n    se.url\n    se.title\n    se.source\n\n    // Server status\n    se.status\n\n    // Id of current session\n    se.session\n\n    // List of all sesions\n    se.sessions\n\n    // Handle id of current window\n    se.window\n\n    // List of all window handle ids\n    se.windows\n\n    // Id of active (focused) element\n    se.activeElement\n\n    // Find Element\n    e = se('#id')\n    // Find All elements\n    es = se('*[#id]')\n\n    // By name:\n    se('[name=\"theName\"]')\n\n    // By id:\n    se('#theId')\n\n    // By tag name:\n    // all links\n    se('a')\n\n    // Element\n    e.attribute('name')\n    e.css('propname')\n    e.displayed\n    e.enabled\n    e.location\n    e.locationInView\n    e.name\n    e.selected\n    e.size\n    e.tag\n    e.text\n\n    // Find child element\n    e.find('#id')\n\n    // Find all child elements\n    e.find('#id')\n\n    // Alerts\n    se.alert.text\n\n\n    // Manipulation\n    // ------------\n\n    // Driver\n\n    // Keyboard\n    se.keys()\n    se.keyDown()\n    se.keyUp()\n\n    // Mouse\n    se.mouse.click()\n    se.mouse.doubleClick()\n    se.mouse.down()\n    se.mouse.moveBy(20,100)\n    se.mouse.moveTo(0,0\n    se.mouse.up()\n\n    // Slim Jim (https://www.youtube.com/watch?v=KbneMYYI78Q)\n    se.touch.down()\n    se.touch.move()\n    se.touch.tap()\n    se.touch.up()\n\n    // Execute JavaScript\n    se.execute()\n    se.executeAsync()\n\n    // Take a Screenshot\n    se.screenshot()\n\n    // Element\n    e.clear()\n    e.click()\n    e.keys()\n    e.submit()\n\n    // Alerts\n    se.alert.accept()\n    se.alert.dismiss()\n    se.alert.focus()\n    se.alert.keys()\n\n\n\n    // Feng Shui\n    // ---------\n\n    // Get size of current window\n    se.size\n\n    // Set size of current window\n    se.size = [200, 200]\n\n    // Get position of current window\n    se.position\n\n    // Get position of current window\n    se.position = [200,200]\n\n    // Maximize size of current window\n    se.maximize()\n\n    // (For mobile...)\n    se.orientation\n    se.orientation = LANDSCAPE\n    se.orientation = PORTRAIT\n\n\n\n    // Synchronisation\n    // ---------------\n    se.timeouts.implicitWait = 10000\n    se.timeouts.pageLoad = 10000\n    se.timeouts.asyncScript = 10000\n","maintainers":[{"name":"hugs","email":"jrhuggins@gmail.com"}],"time":{"modified":"2022-06-12T14:07:11.686Z","created":"2014-07-14T14:59:30.467Z","0.0.1":"2014-07-14T14:59:30.467Z","0.0.2":"2014-07-15T01:38:48.875Z"},"homepage":"https://github.com/hugs/34","keywords":["selenium","webdriver","sync","automation","testing"],"repository":{"type":"git","url":"https://github.com/hugs/34.git"},"author":{"name":"Jason Huggins","email":"jrhuggins@gmail.com"},"bugs":{"url":"https://github.com/hugs/34/issues"},"license":"MIT","readmeFilename":"README.md","users":{"fgribreau":true}}