Struct appium_client::capabilities::android::AndroidCapabilities
source · pub struct AndroidCapabilities { /* private fields */ }
Expand description
Android capabilities
Implementations§
source§impl AndroidCapabilities
impl AndroidCapabilities
sourcepub fn new() -> AndroidCapabilities
pub fn new() -> AndroidCapabilities
Creates new empty capability set for Android (with driver autoselected by Appium).
Examples found in repository?
examples/find_by.rs (line 13)
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Capabilities describe the automation environment,
// for example: what app are we testing
let mut capabilities = AndroidCapabilities::new();
capabilities.app("https://github.com/appium/android-apidemos/releases/download/v3.1.0/ApiDemos-debug.apk");
// To add custom capability that is not supported by this library just use "insert".
// Alternatively, there are helpful functions like "set_bool", "set_str".
// You can read more about capabilities on Appium website - https://appium.io/docs/en/2.1/guides/caps/.
capabilities.set_str("appium:automationName", "uiautomator2");
capabilities.set_bool("appium:fullReset", true);
// To start automation, you need to build a client.
let client = ClientBuilder::native(capabilities)
.connect("http://localhost:4723/")
.await?;
// The app should automatically start, let's print the DOM of current app screen.
let value = client.source().await?;
println!("{value}");
// Screen orientation is another Appium perk
let orientation = client.orientation().await?;
println!("Screen orientation: {orientation}");
// Now we try to locate a button using UiAutomator API.
// Notice that the program will wait until the button appears on screen (but maximum of 30 seconds).
let views_button = client
.appium_wait()
.for_element(By::uiautomator("new UiSelector().text(\"Views\");"))
.await?;
views_button.click().await?;
// Search for a vec of elements, because we know that there will be more than one result.
// Notice that this time we don't wait, just find everything that's on screen as is.
let menu_elements = client
.find_all_by(By::uiautomator("new UiSelector().className(\"android.widget.TextView\");"))
.await?;
menu_elements.get(1)
.unwrap()
.click()
.await?;
// To add a timeout for wait, use "at_most".
// "check_every" limits how often Appium has to perform the search during wait.
//
// Sometimes it's better to use one or both of those methods, because:
// 1) We know that something should appear sooner, and if it doesn't, we don't want to wait full 30 seconds.
// 2) We don't want to slow down Appium server by checking again too often.
let element = client
.appium_wait()
.at_most(Duration::from_secs(20))
.check_every(Duration::from_millis(500))
.for_element(By::class_name("android.widget.ListView"))
.await?;
// This is a simple search for one element, without waiting for it to appear. And then we click on it.
// Notice that we are searching for an element inside "element" (which is a ListView).
element
.find_by(By::accessibility_id("3D Transition"))
.await?
.click()
.await?;
Ok(())
}
sourcepub fn new_uiautomator() -> AndroidCapabilities
pub fn new_uiautomator() -> AndroidCapabilities
Creates empty capability set for UiAutomator2 Android driver.
Examples found in repository?
examples/scroll.rs (line 10)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut capabilities = AndroidCapabilities::new_uiautomator();
capabilities.app("https://github.com/appium/android-apidemos/releases/download/v3.1.0/ApiDemos-debug.apk");
let client = ClientBuilder::native(capabilities)
.connect("http://localhost:4723/")
.await?;
// Go to a screen with a long list
client.find_by(By::accessibility_id("Views"))
.await?
.click()
.await?;
// Let's calculate some things first
let (width, height) = client.get_window_size().await?;
// This is the horizontal center, it will be our x for swipe.
let horizontal_center = (width / 2) as i64;
// The swipe will start at 80% of screen height, and end at 20% of screen height.
// So we will swipe UP through most of the screen.
let almost_top = (height as f64 * 0.2) as i64;
let almost_bottom = (height as f64 * 0.8) as i64;
let swipe_down = TouchActions::new("finger".to_string())
// position the finger first
.then(PointerAction::MoveTo {
duration: Some(Duration::from_millis(0)),
x: horizontal_center,
y: almost_bottom,
})
// THEN touch the screen
.then(PointerAction::Down {
button: MOUSE_BUTTON_LEFT // believe me, it is not a mouse, but a simple touch
})
// THEN move the finger through the screen
.then(PointerAction::MoveTo {
duration: Some(Duration::from_millis(500)),
x: horizontal_center,
y: almost_top,
});
client.perform_actions(swipe_down)
.await?;
Ok(())
}
sourcepub fn new_espresso() -> AndroidCapabilities
pub fn new_espresso() -> AndroidCapabilities
Creates empty capability set for Espresso Android driver.
Trait Implementations§
source§impl AppCapable for AndroidCapabilities
impl AppCapable for AndroidCapabilities
source§fn other_apps(&mut self, paths: &[&str])
fn other_apps(&mut self, paths: &[&str])
App or list of apps (as a JSON array) to install prior to running tests. Read more
source§fn full_reset(&mut self, full_reset: bool)
fn full_reset(&mut self, full_reset: bool)
Perform a complete reset. Read more
source§fn print_page_source_on_find_failure(&mut self, value: bool)
fn print_page_source_on_find_failure(&mut self, value: bool)
When a find operation fails, print the current page source. Defaults to false. Read more
source§impl AppiumCapability for AndroidCapabilities
impl AppiumCapability for AndroidCapabilities
source§fn automation_name(&mut self, automation_name: &str)
fn automation_name(&mut self, automation_name: &str)
Set the automation driver to use (the engine for tests, eg. XCuiTest for iOS). Read more
source§fn platform_version(&mut self, version: &str)
fn platform_version(&mut self, version: &str)
The version of a platform, e.g., for iOS, “16.0”
source§fn device_name(&mut self, device_name: &str)
fn device_name(&mut self, device_name: &str)
The name of a particular device to automate. Read more
source§impl AppiumSettingsCapable for AndroidCapabilities
impl AppiumSettingsCapable for AndroidCapabilities
fn set_setting(&mut self, name: &str, value: Value)
source§impl Clone for AndroidCapabilities
impl Clone for AndroidCapabilities
source§fn clone(&self) -> AndroidCapabilities
fn clone(&self) -> AndroidCapabilities
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for AndroidCapabilities
impl Debug for AndroidCapabilities
source§impl Default for AndroidCapabilities
impl Default for AndroidCapabilities
source§impl Deref for AndroidCapabilities
impl Deref for AndroidCapabilities
source§impl DerefMut for AndroidCapabilities
impl DerefMut for AndroidCapabilities
source§impl From<AndroidCapabilities> for Capabilities
impl From<AndroidCapabilities> for Capabilities
source§fn from(value: AndroidCapabilities) -> Self
fn from(value: AndroidCapabilities) -> Self
Converts to this type from the input type.
source§impl PartialEq for AndroidCapabilities
impl PartialEq for AndroidCapabilities
source§fn eq(&self, other: &AndroidCapabilities) -> bool
fn eq(&self, other: &AndroidCapabilities) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl UdidCapable for AndroidCapabilities
impl UdidCapable for AndroidCapabilities
source§impl UiAutomator2AppCompatible for AndroidCapabilities
impl UiAutomator2AppCompatible for AndroidCapabilities
source§fn app_activity(&mut self, activity: &str)
fn app_activity(&mut self, activity: &str)
Activity name for the Android activity you want to launch from your package. Read more
source§fn app_package(&mut self, activity: &str)
fn app_package(&mut self, activity: &str)
Java package of the Android app you want to run. Read more
source§fn app_wait_activity(&mut self, activity: &str)
fn app_wait_activity(&mut self, activity: &str)
Activity name/names, comma separated, for the Android activity you want to wait for. Read more
source§fn app_wait_package(&mut self, activity: &str)
fn app_wait_package(&mut self, activity: &str)
Java package of the Android app you want to wait for. Read more
source§fn app_wait_duration(&mut self, duration: Duration)
fn app_wait_duration(&mut self, duration: Duration)
Timeout in milliseconds used to wait for the appWaitActivity to launch (default 20000)
source§fn android_install_timeout(&mut self, duration: Duration)
fn android_install_timeout(&mut self, duration: Duration)
Timeout in milliseconds used to wait for an apk to install to the device. Defaults to 90000
source§fn app_wait_for_launch(&mut self, value: bool)
fn app_wait_for_launch(&mut self, value: bool)
Block until app starts. Read more
source§fn force_app_launch(&mut self, value: bool)
fn force_app_launch(&mut self, value: bool)
Always start app forcefully when testing starts. Read more
source§fn auto_launch(&mut self, value: bool)
fn auto_launch(&mut self, value: bool)
Whether to launch the application under test automatically after a test starts. Read more
source§fn intent_category(&mut self, value: &str)
fn intent_category(&mut self, value: &str)
Set an optional intent category to be applied when starting the given appActivity by Activity Manager. Read more
source§fn intent_action(&mut self, value: &str)
fn intent_action(&mut self, value: &str)
Set an optional intent action to be applied when starting the given appActivity by Activity Manager. Read more
source§fn intent_flags(&mut self, value: &str)
fn intent_flags(&mut self, value: &str)
Set an optional intent flags to be applied when starting the given appActivity by Activity Manager. Read more
source§fn optional_intent_arguments(&mut self, value: &str)
fn optional_intent_arguments(&mut self, value: &str)
Set an optional intent arguments to be applied when starting the given appActivity by Activity Manager
source§fn dont_stop_app_on_reset(&mut self, value: bool)
fn dont_stop_app_on_reset(&mut self, value: bool)
Set it to true if you don’t want the application to be restarted if it was already running. Read more
source§fn uninstall_other_packages(&mut self, value: &str)
fn uninstall_other_packages(&mut self, value: &str)
Allows to set one or more comma-separated package identifiers to be uninstalled from the device before a test starts.
source§fn remote_apps_cache_limit(&mut self, value: u64)
fn remote_apps_cache_limit(&mut self, value: u64)
Sets the maximum amount of application packages to be cached on the device under test. Read more
source§fn allow_test_packages(&mut self, value: bool)
fn allow_test_packages(&mut self, value: bool)
Use packages built with test flag. Read more
source§fn enforce_app_install(&mut self, value: bool)
fn enforce_app_install(&mut self, value: bool)
Reinstall app (even if it’s a downgrade). Read more
impl Eq for AndroidCapabilities
impl StructuralEq for AndroidCapabilities
impl StructuralPartialEq for AndroidCapabilities
Auto Trait Implementations§
impl RefUnwindSafe for AndroidCapabilities
impl Send for AndroidCapabilities
impl Sync for AndroidCapabilities
impl Unpin for AndroidCapabilities
impl UnwindSafe for AndroidCapabilities
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more