Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2396827
  • 博文数量: 328
  • 博客积分: 4302
  • 博客等级: 上校
  • 技术积分: 5486
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 11:14
个人简介

悲剧,绝对的悲剧,悲剧中的悲剧。

文章分类

全部博文(328)

文章存档

2017年(6)

2016年(18)

2015年(28)

2014年(73)

2013年(62)

2012年(58)

2011年(55)

2010年(28)

分类: iOS平台

2016-03-11 19:18:34


Appium has libraries for:

Language Source

Note that some methods such as endTestCoverage() are not generally useful. Proper coverage support will be added once is resolved. If you want to use them anyway, consult the documentation for the bindings on GitHub.

Lock

Lock the screen.

# ruby lock 5
# python driver.lock(5)
// java driver.lockScreen(3);
// javascript driver.lock(3)
// php $this->lock(3);
// c# driver.LockDevice(3);
// objective c [driver lockDeviceScreen:3];

Background app

Send the currently active app to the background.

# ruby background_app 5
# python driver.background_app(5)
// java driver.runAppInBackground(5);
// javascript driver.backgroundApp(5)
// php $this->backgroundApp(5);
// c# driver.BackgroundApp(5);
// objective c [driver runAppInBackground:3];

Hide Keyboard

Hide the keyboard. Note: on iOS, this helper function is not guaranteed to work. There is no automation hook for hiding the keyboard, and apps are free to allow the user to hide the keyboard using any of a variety of different strategies, whether that is tapping outside the keyboard, swiping down, etc... We encourage you, rather than using this method, to think about how a user would hide the keyboard in your app, and tell Appium to do that instead (swipe, tap on a certain coordinate, etc...). That being said, the default behavior here might help you.

# ruby hide_keyboard
# python driver.hide_keyboard()
// java driver.hideKeyboard();
// javascript driver.hideKeyboard()
// php $this->hideKeyboard(); $this->hideKeyboard(array('strategy' => 'pressKey', 'key' => 'Done'));
// c# driver.HideKeyboard("Done");
// objective c [driver hideKeyboard];

Start Activity

Open an activity in the current app or start a new app and open an activity Android only

// java driver.startActivity("appPackage","com.example.android.apis", null, null);
// javascript driver.startActivity({appPackage: 'com.example.android.apis', appActivity: '.Foo'}, cb);
# python driver.start_activity('com.example.android.apis', '.Foo')
# ruby start_activity app_package: 'io.appium.android.apis', app_activity: '.accessibility.AccessibilityNodeProviderActivity'
// c# driver.StartActivity("com.example.android.apis", ".Foo");
// php $this->startActivity(array("appPackage" => "com.example.android.apis",  "appActivity" => ".Foo"));
// objective c [driver startActivity:@"com.example.android.apis" package:@".Foo"];

Open Notifications

Open the notification shade Android only

// java driver.openNotifications();
// javascript driver.openNotifications(cb);
# python driver.open_notifications()
# ruby openNotifications
// c# driver.OpenNotifications();
// php $this->openNotifications();
// objective c [driver openNotifications];

Is installed

Check if an app is installed

# ruby is_installed? "com.example.android.apis"
# python driver.is_app_installed('com.example.android.apis')
// java driver.isAppInstalled("com.example.android.apis")
// javascript driver.isAppInstalled("com.example.android.apis")
  .then(function (isAppInstalled) { /*...*/ })
// php $this->isAppInstalled('com.example.android.apis');
// c# driver.IsAppInstalled("com.example.android.apis-");
// objective c [driver isAppInstalled:@"com.example.android.apis-"];

Install App

Install an app to the device.

# ruby install 'path/to/my.apk'
# python driver.install_app('path/to/my.apk')
// java driver.installApp("path/to/my.apk")
// javascript driver.installApp("path/to/my.apk")
// php $this->installApp('path/to/my.apk');
// c# driver.InstallApp("path/to/my.apk");
// objective c [driver installAppAtPath:@"path/to/my.apk"];

Remove App

Remove an app from the device.

# ruby remove 'com.example.android.apis'
# python driver.remove_app('com.example.android.apis')
// java driver.removeApp("com.example.android.apis")
// javascript driver.removeApp("com.example.android.apis")
// php $this->removeApp('com.example.android.apis');
// c# driver.RemoveApp("com.example.android.apis");
// objective c [driver removeApp:@"com.example.android.apis"];

Shake

Simulate the device shaking.

# ruby shake
# python driver.shake()
// java driver.shake()
// javascript driver.shake()
// php $this->shake();
// c# driver.ShakeDevice();
// objective c [driver shakeDevice];

Close app

Close the app

# ruby close_app
# python driver.close_app();
// java driver.closeApp()
// javascript driver.closeApp()
// php $this->closeApp();
// c# driver.CloseApp();
// objective c [driver closeApp];

Launch

Launch the session for the desired capabilities. Note that this is the companion to the autoLaunch=false capability. This is not for launching arbitrary apps/activities---for that use start_activity. This is for continuing the initialization ("launch") process if you have used autoLaunch=false.

# ruby launch
# python driver.launch_app()
// java driver.launchApp()
// javascript driver.launchApp()
// php $this->launchApp();
// c# driver.LaunchApp();
// objective c [driver launchApp];

Reset

Reset the app.

# ruby reset
# python driver.reset()
// java driver.resetApp()
// javascript driver.resetApp()
// php $this->reset();
// c# driver.ResetApp();
// objective c [driver resetApp];

Available Contexts

List all available contexts

# ruby context_array = available_contexts
# python driver.contexts
// java driver.getContextHandles()
// javascript driver.contexts().then(function (contexts) { /*...*/ })
// php $this->contexts();
// c# driver.GetContexts()
// objective c NSArray *contexts = driver.allContexts;

Current context

List the current context

# ruby context = current_context
# python driver.current_context
// java driver.getContext()
// javascript driver.currentContext().then(function (context) { /*...*/ })
// php $this->context();
// c# driver.GetContext()
// objective c NSString *context = driver.context;

Switch to default context

Change the context to the default.

# ruby switch_to_default_context
# python driver.switch_to.context(None)
// java driver.context();
// javascript driver.context()
// php $this->context(NULL);
// c# driver.SetContext();
// objective c [driver setContext:nil];

App Strings

Get the app's strings.

# ruby strings = app_strings
# python driver.app_strings
// java driver.getAppStrings();
// javascript driver.getAppStrings().then(function (appStrings) { /*...*/ })
// php $this->appStrings(); $this->appStrings('ru');
// c# driver.GetAppStrings();
// objective c [driver appStrings];
[driver appStringsForLanguage:"@ru"];

Key Event

Send a key event to the device.

# ruby key_event 176
# python driver.keyevent(176)
// java driver.sendKeyEvent(AndroidKeyCode.HOME);
// javascript driver.deviceKeyEvent(wd.SPECIAL_KEYS.Home)
// php $this->keyEvent('176');
// c# driver.KeyEvent("176");
// objective c NSError *err;
[driver triggerKeyEvent:176 metastate:0 error:&err];

Current Activity

Android only. Get the current activity.

# ruby current_activity
# python driver.current_activity
// java driver.currentActivity();
// javascript driver.getCurrentActivity().then(function (activity) { /*...*/ })
// php $this->currentActivity();
// c# driver.GetCurrentActivity();
// objective c NSError *err;
[driver currentActivity];

TouchAction / MultiTouchAction

An API for generating touch actions. This section of the documentation will be expanded upon soon.

# ruby touch_action = Appium::TouchAction.new element = find_element :name, 'Buttons, Various uses of UIButton' touch_action.press(element: element, x: 10, y: 10).perform
# python action = TouchAction(driver)
action.press(element=el, x=10, y=10).release().perform()
// java TouchAction action = new TouchAction(driver)
.press(mapview, 10, 10)
.release(). perform();
// javascript var action = new wd.TouchAction(driver);
action
  .tap({el: el, x: 10, y: 10})
  .release(); return action.perform(); // returns a promise
// php $action = $this->initiateTouchAction();  ->press(array('element' => $el))  ->release()  ->perform();  $action1 = $this->initiateTouchAction(); $action1->press(array('element' => $els[0]))  ->moveTo(array('x' => 10, 'y' => 0))  ->moveTo(array('x' => 10, 'y' => -75))  ->moveTo(array('x' => 10, 'y' => -600))  ->release();  $action2 = $this->initiateTouchAction(); $action2->press(array('element' => $els[1]))  ->moveTo(array('x' => 10, 'y' => 10))  ->moveTo(array('x' => 10, 'y' => -300))  ->moveTo(array('x' => 10, 'y' => -600))  ->release();  $multiAction = $this->initiateMultiAction(); $multiAction->add($action1); $multiAction->add($action2); $multiAction->perform();
// c# ITouchAction action = new TouchAction(driver);
action.Press(el, 10, 10).Release();
action.Perform ();

Swipe

Simulate a user swipe.

# ruby swipe start_x: 75, start_y: 500, end_x: 75, end_y: 0, duration: 0.8
# python driver.swipe(start_x=75, start_y=500, end_x=75, end_y=0, duration=800)
// java driver.swipe(75, 500, 75, 0, 0.8)
// 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 $this->swipe(75, 500, 75, 0, 800);
// c# todo: c#

Pinch

Pinch the screen.

# ruby pinch 75
# python driver.pinch(element=el)
// java driver.pinch(element);
// 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();
$this->pinch($el);
// c# driver.Pinch(25, 25)

Zoom

Zoom the screen.

# ruby zoom 200
# python driver.zoom(element=el)
// java driver.zoom(element);
// 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 $this->zoom($el);
// c# driver.Zoom(100, 200);

Scroll To

Scroll to an element.

# ruby element = find_element :name, "Element Name" execute_script "mobile: scroll", direction: "down", element: element.ref
# python driver.execute_script("mobile: scroll", {"direction": "down", element: element.id})
// java JavascriptExecutor js = (JavascriptExecutor) driver; HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("direction", "down");
scrollObject.put("element", ((RemoteWebElement) element).getId());
js.executeScript("mobile: scroll", scrollObject);
// javascript return driver.elementByName().then(function (el) { driver.execute("mobile: scroll", [{direction: "down", element: el.value}]);
});
// php $els = $this->elements($this->using('class name')->value('android.widget.TextView')); $this->scroll($els[count($els) - 1], $els[0]);
// c# Dictionary<string, string> scrollObject = new Dictionary<string, string>();
scrollObject.Add("direction", "down");
scrollObject.Add("element", );
((IJavaScriptExecutor)driver).ExecuteScript("mobile: scroll", scrollObject));

Pull file

Pulls a file from the device.

# ruby pull_file 'Library/AddressBook/AddressBook.sqlitedb'
# python driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')
// java driver.pullFile("Library/AddressBook/AddressBook.sqlitedb");
// javascript driver.pullFile("Library/AddressBook/AddressBook.sqlitedb")
  .then(function (base64File) { /*...*/ })
// php $this->pullFile('Library/AddressBook/AddressBook.sqlitedb');
// c# driver.PullFile("Library/AddressBook/AddressBook.sqlitedb");

Push File

Pushes a file to the device.

# ruby data = "some data for the file" path = "/data/local/tmp/file.txt" push_file path, data
# python data = "some data for the file" path = "/data/local/tmp/file.txt" driver.push_file(path, data.encode('base64'))
// java byte[] data = Base64.encodeBase64("some data for the file".getBytes()); String path = "/data/local/tmp/file.txt";
driver.pushFile(path, data)
// javascript driver.pushFile(path, data)
// php $path = 'data/local/tmp/test_push_file.txt'; $data = 'This is the contents of the file to push to the device.'; $this->pushFile($path, base64_encode($data));
// c# driver.PushFile("/data/local/tmp/file.txt", "some data for the file");

Settings

Here you will find sample code for getting/setting appium serverSetting. For more information on how they work, and which settings are supported, see [the settings docs][/docs/en/advanced-concepts/settings.md]

current_settings = get_settings
update_settings someSetting: true
current_settings = driver.get_settings()
driver.update_settings({"someSetting": true})
JsonObject settings = driver.getSettings() // java-client doesn't support setting arbitrary settings, just settings which are already provided by appium. // So for the 'ignoreUnimportantViews' setting, the following method exists: driver.ignoreUnimportantViews(true);
var settings = driver.settings(); browser.updateSettings({'someSetting': true});
$settings = $this->getSettings(); $this->updateSettings(array('cyberdelia' => "open"));
Dictionarysettings = driver.GetSettings(); // dotnet-driver doesn't support setting arbitrary settings, just settings which are already provided by appium. // So for the 'ignoreUnimportantViews' setting, the following method exists: driver.IgnoreUnimportantViews(true);

Appium Desktop Apps

Appium's desktop app supports OS X and Windows.



Repost from 
阅读(3834) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~