From 5df9e3750b7cba8d95d30fe581a3133dde77f255 Mon Sep 17 00:00:00 2001 From: sebv Date: Tue, 1 Jul 2014 19:47:17 +0800 Subject: [PATCH] added/fixed doc js sample code. --- docs/en/appium-bindings.md | 126 ++++++++++++++++++++++++++-------- docs/en/hybrid.md | 59 ++++++++-------- docs/en/migrating-to-1-0.md | 8 +++ docs/en/mobile-web.md | 4 +- docs/en/network_connection.md | 41 +++++------ docs/en/running-tests.md | 6 +- docs/en/style-guide.md | 54 +++++++-------- docs/en/touch-actions.md | 5 +- 8 files changed, 187 insertions(+), 116 deletions(-) diff --git a/docs/en/appium-bindings.md b/docs/en/appium-bindings.md index b71c399ce..61b06a6cc 100644 --- a/docs/en/appium-bindings.md +++ b/docs/en/appium-bindings.md @@ -40,7 +40,7 @@ driver.lockScreen(3); ``` ```javascript -todo: javascript +driver.lock(3) ``` ```php @@ -68,7 +68,7 @@ driver.runAppInBackground(5); ``` ```javascript -todo: javascript +driver.backgroundApp(5) ``` ```php @@ -96,7 +96,7 @@ driver.hideKeyboard(); ``` ```javascript -todo: javascript +driver.hideKeyboard() ``` ```php @@ -125,7 +125,8 @@ driver.isAppInstalled("com.example.android.apis") ``` ```javascript -todo: javascript +driver.isAppInstalled("com.example.android.apis") + .then(function (isAppInstalled) { /*...*/ }) ``` ```php @@ -153,7 +154,7 @@ driver.installApp("path/to/my.apk") ``` ```javascript -todo: javascript +driver.installApp("path/to/my.apk") ``` ```php @@ -181,7 +182,7 @@ driver.removeApp("com.example.android.apis") ``` ```javascript -todo: javascript +driver.removeApp("com.example.android.apis") ``` ```php @@ -209,7 +210,7 @@ driver.shake() ``` ```javascript -todo: javascript +driver.shake() ``` ```php @@ -237,7 +238,7 @@ driver.closeApp() ``` ```javascript -todo: javascript +driver.closeApp() ``` ```php @@ -265,7 +266,7 @@ driver.launchApp() ``` ```javascript -todo: javascript +driver.launchApp() ``` ```php @@ -293,7 +294,7 @@ driver.resetApp() ``` ```javascript -todo: javascript +driver.resetApp() ``` ```php @@ -321,7 +322,7 @@ driver.getContextHandles() ``` ```javascript -todo: javascript +driver.contexts().then(function (contexts) { /*...*/ }) ``` ```php @@ -350,7 +351,7 @@ driver.getContext() ``` ```javascript -todo: javascript +driver.currentContext().then(function (context) { /*...*/ }) ``` ```php @@ -378,7 +379,7 @@ driver.context(); ``` ```javascript -todo: javascript +driver.context() ``` ```php @@ -406,7 +407,7 @@ driver.getAppString(); ``` ```javascript -todo: javascript +driver.getAppStrings().then(function (appStrings) { /*...*/ }) ``` ```php @@ -435,7 +436,7 @@ driver.sendKeyEvent(AndroidKeyCode.HOME); ``` ```javascript -todo: javascript +driver.deviceKeyEvent(wd.SPECIAL_KEYS.Home) ``` ```php @@ -463,7 +464,7 @@ driver.currentActivity(); ``` ```javascript -todo: javascript +driver.getCurrentActivity().then(function (activity) { /*...*/ }) ``` ```php @@ -498,7 +499,11 @@ perform(); ``` ```javascript -todo: javascript +var action = new wd.TouchAction(driver); +action + .tap({el: el, x: 10, y: 10}) + .release(); +return action.perform(); // returns a promise ``` ```php @@ -528,13 +533,9 @@ $multiAction->perform(); ``` ```csharp -var touchAction1 = new TouchActions(this); -touchAction1.Down(10, 10).Up(10, 10); - -var multiTouchAction = new MultiTouchAction(this); -multiTouchAction.Add(touchAction1); - -PerformMultiTouchAction(multiTouchAction); +ITouchAction action = new TouchAction(driver); +action.Press(el, 10, 10).Release(); +action.Perform (); ``` ## Swipe @@ -554,7 +555,19 @@ driver.swipe(startx=75, starty=500, endx=75, endy=0, duration=800) ``` ```javascript -todo: javascript +function swipe(opts) { + var action = new wd.TouchAction(this); + action + .press({x: opts.startX, y: opts.startY}) + .wait(opts.duration) + .moveTo({x: opts.endX, y: opts.endY}) + .release(); + return action.perform(); +} +wd.addPromiseChainMethod('swipe', swipe); +// ... +return driver.swipe({ startX: 75, startY: 500, + endX: 75, endY: 0, duration: 800 }); ``` ```php @@ -582,7 +595,34 @@ driver.pinch(element); ``` ```javascript -todo: javascript +function pinch(el) { + return Q.all([ + el.getSize(), + el.getLocation(), + ]).then(function(res) { + var size = res[0]; + var loc = res[1]; + var center = { + x: loc.x + size.width / 2, + y: loc.y + size.height / 2 + }; + var a1 = new wd.TouchAction(this); + a1.press({el: el, x: center.x, y:center.y - 100}).moveTo({el: el}).release(); + var a2 = new wd.TouchAction(this); + a2.press({el: el, x: center.x, y: center.y + 100}).moveTo({el: el}).release(); + var m = new wd.MultiAction(this); + m.add(a1, a2); + return m.perform(); + }.bind(this)); +}; +wd.addPromiseChainMethod('pinch', pinch); +wd.addElementPromiseChainMethod('pinch', function() { + return this.browser.pinch(this); +}); +// ... +return driver.pinch(el); +// ... +return el.pinch(); ``` ```php @@ -610,7 +650,34 @@ driver.zoom(element); ``` ```javascript -todo: javascript +function zoom(el) { + return Q.all([ + this.getWindowSize(), + this.getLocation(el), + ]).then(function(res) { + var size = res[0]; + var loc = res[1]; + var center = { + x: loc.x + size.width / 2, + y: loc.y + size.height / 2 + }; + var a1 = new wd.TouchAction(this); + a1.press({el: el}).moveTo({el: el, x: center.x, y: center.y - 100}).release(); + var a2 = new wd.TouchAction(this); + a2.press({el: el}).moveTo({el: el, x: center.x, y: center.y + 100}).release(); + var m = new wd.MultiAction(this); + m.add(a1, a2); + return m.perform(); + }.bind(this)); +}; +wd.addPromiseChainMethod('zoom', zoom); +wd.addElementPromiseChainMethod('zoom', function() { + return this.browser.zoom(this); +}); +// ... +return driver.zoom(el); +// ... +return el.zoom(); ``` ```php @@ -671,7 +738,8 @@ driver.pullFile("Library/AddressBook/AddressBook.sqlitedb"); ``` ```javascript -todo: javascript +driver.pullFile("Library/AddressBook/AddressBook.sqlitedb") + .then(function (base64File) { /*...*/ }) ``` ```php @@ -705,7 +773,7 @@ driver.pushFile(path, data) ``` ```javascript -todo: javascript +driver.pushFile(path, data) ``` ```php diff --git a/docs/en/hybrid.md b/docs/en/hybrid.md index 9370defe0..9add50ea4 100644 --- a/docs/en/hybrid.md +++ b/docs/en/hybrid.md @@ -76,26 +76,22 @@ part of iOS 6** and was not available previously. * We're working on filling out the methods available in web view contexts. [Join us in our quest!](http://appium.io/get-involved.html) -```js - // assuming we have an initialized `driver` object working on the UICatalog app - driver.elementByName('Web, Use of UIWebView', function(err, el) { // find button to nav to view - el.click(function(err) { // nav to UIWebView - driver.contexts(function(err, contexts) { // get list of available views - driver.context(contexts[1], function(err) { // choose what is probably the webview context - driver.elementsByCss('.some-class', function(err, els) { // get webpage elements by css - els.length.should.be.above(0); // there should be some! - els[0].text(function(elText) { // get text of the first element - elText.should.eql("My very own text"); // it should be extremely personal and awesome - driver.context('NATIVE_APP', function(err) { // leave webview context - // do more native stuff here if we want - driver.quit(); // stop webdrivage - }); - }); - }); - }); - }); - }); - }); +```javascript +// assuming we have an initialized `driver` object working on the UICatalog app +return driver + .elementByName('Web, Use of UIWebView') // find button to nav to view + .click() // nav to UIWebView + .contexts().then(function (contexts) { // get list of available views + return driver.context(contexts[1]); // choose what is probably the webview context + }).elementsByCss('.some-class').then(function (els) { // get webpage elements by css + els.length.should.be.above(0); // there should be some! + return els[0]; + }).text() // get text of the first element + .should.become("My very own text") // it should be extremely personal and awesome + .context('NATIVE_APP') // leave webview context + // do more native stuff here if we want + .quit() // stop webdrivage + .done(); // end promise chain (may not be needed) ``` ```java @@ -230,20 +226,19 @@ switching contexts, etc... Make sure [setWebContentsDebuggingEnabled](http://developer.android.com/reference/android/webkit/WebView.html#setWebContentsDebuggingEnabled(boolean)) is set to true as described in the [remote debugging docs](https://developer.chrome.com/devtools/docs/remote-debugging#configure-webview). -```js +```javascript // assuming we have an initialized `driver` object working on a hybrid app -driver.context("WEBVIEW", function(err) { // choose the only available view - driver.elementsByCss('.some-class', function(err, els) { // get webpage elements by css +return driver + .context("WEBVIEW") // choose the only available view + .elementsByCss('.some-class').then(function (els) { // get webpage elements by css els.length.should.be.above(0); // there should be some! - els[0].text(function(elText) { // get text of the first element - elText.should.eql("My very own text"); // it should be extremely personal and awesome - driver.context("NATIVE_APP", function(err) { // leave webview context - // do more native stuff here if we want - driver.quit(); // stop webdrivage - }); - }); - }); -}); + return els[0]; + }).text() // get text of the first element + .should.become("My very own text") // it should be extremely personal and awesome + .context("NATIVE_APP") // leave webview context + // do more native stuff here if we want + .quit() // stop webdrivage + .done(); // end promise chain (may not be needed) ``` ```java diff --git a/docs/en/migrating-to-1-0.md b/docs/en/migrating-to-1-0.md index 678bfe375..dd8911b0a 100644 --- a/docs/en/migrating-to-1-0.md +++ b/docs/en/migrating-to-1-0.md @@ -87,12 +87,20 @@ driver.contexts current = driver.context ``` +```javascript +driver.contexts().then(function (contexts) { /*...*/ }) +``` + And to switch between them, you use ```python driver.switch_to.context("WEBVIEW") ``` +```javascript +driver.currentContext().then(function (context) { /*...*/ }) +``` + ## No more `execute_script("mobile: xxx")` All the `mobile: ` methods have been removed, and have been replaced by native methods in the Appium client libraries. This means that a method call like `driver.execute("mobile: lock", [5])` will now look something more like `driver.lock(5)` (where `lock` has been turned into a native client method). Of course, the details on calling these methods will differ by client. diff --git a/docs/en/mobile-web.md b/docs/en/mobile-web.md index e78a7c7e5..9c039832f 100644 --- a/docs/en/mobile-web.md +++ b/docs/en/mobile-web.md @@ -15,7 +15,7 @@ attempting to use Appium. Then, use desired capabilities like these to run your test in mobile Safari: -```js +```javascript { platformName: 'iOS' , platformVersion: '7.1' @@ -180,7 +180,7 @@ Pre-requisites: Then, use desired capabilities like these to run your test in Chrome: -```js +```javascript { platformName: 'Android' , platformVersion: '4.4' diff --git a/docs/en/network_connection.md b/docs/en/network_connection.md index 74b54ca78..a82c7d040 100644 --- a/docs/en/network_connection.md +++ b/docs/en/network_connection.md @@ -20,7 +20,7 @@ connection API for iOS. Choose the setting you would like to use, and then send the correct bitmask from the table above. -```js +```javascript // set airplane mode driver.setNetworkConnection(1) @@ -37,23 +37,24 @@ driver.setNetworkConnection(6) Retrieving the network connection settings returns the same bitmask, from which the status can be decoded. -```js -var connectionType = driver.getNetworkConnection(); -switch (connectionType) { - case 0: - // no network connection - break; - case 1: - // airplane mode - break; - case 2: - // wifi - break; - case 4: - // data - break; - case 6: - // wifi and data - break; -} +```javascript +driver.getNetworkConnection().then(function (connectionType) { + switch (connectionType) { + case 0: + // no network connection + break; + case 1: + // airplane mode + break; + case 2: + // wifi + break; + case 4: + // data + break; + case 6: + // wifi and data + break; + } +}); ``` diff --git a/docs/en/running-tests.md b/docs/en/running-tests.md index 1344acd7f..680ea04f3 100644 --- a/docs/en/running-tests.md +++ b/docs/en/running-tests.md @@ -31,7 +31,7 @@ Basically, first make sure Appium is running: Then script your WebDriver test, sending in the following desired capabilities: -```js +```javascript { platformName: 'iOS', platformVersion: '7.1', @@ -106,7 +106,7 @@ Now, make sure Appium is running: Then script your WebDriver test, sending in the following desired capabilities: -```js +```javascript { platformName: 'Android', platformVersion: '4.4', @@ -168,7 +168,7 @@ To use Selendroid, all that is required is to slightly change the set of desired capabilities mentioned above, by adding the `automationName` capability and specifying the Selendroid automation backend. -```js +```javascript { automationName: 'Selendroid', platformName: 'Android', diff --git a/docs/en/style-guide.md b/docs/en/style-guide.md index e5fc43209..0e122d736 100644 --- a/docs/en/style-guide.md +++ b/docs/en/style-guide.md @@ -49,28 +49,28 @@ automatic linting. * Use two spaces for indentation, *no tabs* * Use single spaces around operators - ```js + ```javascript var x = 1; ``` not - ```js + ```javascript var x=1; ``` * Spaces after commas and colons in lists, objects, function calls, etc... - ```js + ```javascript var x = myFunc("lol", {foo: bar, baz: boo}); ``` not - ```js + ```javascript var x = myFunc("lol",{foo:bar,baz:boo}); ``` * Always end statements with semicolons * Comma-first - ```js + ```javascript var x = { foo: 'bar' , baz: 'boo' @@ -80,7 +80,7 @@ automatic linting. * Brackets for `function`, `if`, etc... go on same line, `else` gets sandwiched - ```js + ```javascript if (foo === bar) { // do something } else { @@ -90,35 +90,35 @@ automatic linting. * Space after `if`, `for`, and `function`: - ```js + ```javascript if (foo === bar) { ``` - ```js + ```javascript for (var i = 0; i < 10; i ++) { ``` - ```js + ```javascript var lol = function (foo) { ``` not - ```js + ```javascript if(foo === bar) { ``` - ```js + ```javascript for(var i = 0; i < 10; i ++) { ``` - ```js + ```javascript var lol = function(foo) { ``` * Avoid bracketless `if` for one-liners: - ```js + ```javascript if (foo === bar) { foo++; } ``` not - ```js + ```javascript if (foo === bar) foo++; ``` @@ -127,21 +127,21 @@ automatic linting. * Line length shouldn't be longer than 79 characters * Break up long strings like this: - ```js + ```javascript myFunc("This is a really long string that's longer " + "than 79 characters so I broke it up, woo"); ``` * Comments should line up with code - ```js + ```javascript if (foo === 5) { myFunc(foo); // foo++; } ``` not - ```js + ```javascript if (foo === 5) { myFunc(foo); //foo++; @@ -150,7 +150,7 @@ automatic linting. * Subclassing by extending prototypes - ```js + ```javascript var _ = require('underscore'); var SuperClass = function () { @@ -172,7 +172,7 @@ automatic linting. * Callbacks are always last in function definitions - ```js + ```javascript var foo = function (arg1, arg2, cb) { ... }; @@ -180,31 +180,31 @@ automatic linting. * Define functions as variables - ```js + ```javascript var myFunc = function (a, b, c) {}; ``` not - ```js + ```javascript function myFunc (a, b, c) {} ``` * Variable names should be camelCased: - ```js + ```javascript var myVariable = 42; ``` not - ```js + ```javascript var my_variable = 42; ``` * Check for undefined - ```js + ```javascript typeof myVariable === "undefined" ``` not - ```js + ```javascript myVariable === undefined ``` @@ -214,7 +214,7 @@ Keep on the same line if it makes sense semantically and length is not an issue: Examples: -```js +```javascript driver.elementByTagName('el1').should.become("123") .nodeify(done); @@ -225,7 +225,7 @@ Examples: Alternatively use extra indents to improve readability: -```js +```javascript h.driver .elementById('comments') .clear() diff --git a/docs/en/touch-actions.md b/docs/en/touch-actions.md index 705ee583a..09b4af7c9 100644 --- a/docs/en/touch-actions.md +++ b/docs/en/touch-actions.md @@ -105,11 +105,10 @@ See examples below: * **WD.js:** -```js +```javascript // scroll the view down -driver.execute("mobile: scroll", [{direction: 'down'}], function(err) { +driver.execute("mobile: scroll", [{direction: 'down'}]) // continue testing -}); ``` * **Java:**