概述

使用命令,您可以通过指定选择器与移动应用程序或操作系统本身中的元素进行交互。请参考此 指南 了解选择器在原生移动应用程序中的工作原理。

这些命令可用于与移动应用程序进行交互

点击

要点击某个元素,只需使用 app.click('selector strategy','selector')app.click(selector object)。您可以使用 Appium Inspector 查找元素。


// Mention the selector strategy followed by the selector itself
// Click on the element with id `org.wikipedia:id/search_container`
app.click('id','org.wikipedia:id/search_container')

// Mention a selector object and index. // Click on the nth element with id `org.wikipedia:id/page_list_item_title` app.click({selector: 'org.wikipedia:id/page_list_item_title',locateStrategy: 'id',index: n})

// Mention the selector strategy followed by the selector itself
// Click on the element with id `org.wikipedia:id/search_container`
app.click('id','org.wikipedia:id/search_container')

// Mention a selector object and index // Click on the nth element with id `org.wikipedia:id/page_list_item_title` app.click({selector: 'org.wikipedia:id/page_list_item_title',locateStrategy: 'id',index: n})

键入/发送键

如果您的应用程序包含需要文本输入的字段,您可以使用 app.sendKeys('selector strategy','selector','text')app.sendKeys(selector object,text) 与此类元素进行交互。


//Mention the selector strategy followed by the selector itself
//Type the text 'Test' the element with id `org.wikipedia:id/search_container`
app.sendKeys('id','org.wikipedia:id/search_src_text','Test')

//Mention a selector object and index //Type 'Test' in the nth element with id `org.wikipedia:id/search_src_text` app.sendKeys({selector: 'org.wikipedia:id/search_src_text',locateStrategy: 'id',index: n},'Test')

//Mention the selector strategy followed by the selector itself
//Type the text 'Test' the element with id `org.wikipedia:id/search_container`
app.sendKeys('id','org.wikipedia:id/search_src_text','Test')

//Mention a selector object and index //Type 'Test' in the nth element with id `org.wikipedia:id/search_src_text` app.sendKeys({selector: 'org.wikipedia:id/search_src_text',locateStrategy: 'id',index: n},'Test')

清除值

要清除元素的值,只需使用 app.clearValue('selector strategy','selector')app.clearValue(selector object)。您可以使用 Appium Inspector 查找元素


//Mention the selector strategy followed by the selector itself
//Clear the value of the element with id `org.wikipedia:id/search_src_text`
app.clearValue('id','org.wikipedia:id/search_src_text')

//Mention a selector object and index //Click on the nth element with id `org.wikipedia:id/search_src_text` app.clearValue({selector: 'org.wikipedia:id/search_src_text',locateStrategy: 'id',index: n})

//Mention the selector strategy followed by the selector itself
//Clear the value of the element with id `org.wikipedia:id/search_src_text`
app.clearValue('id','org.wikipedia:id/search_src_text')

//Mention a selector object and index //Click on the nth element with id `org.wikipedia:id/search_src_text` app.clearValue({selector: 'org.wikipedia:id/search_src_text',locateStrategy: 'id',index: n})

设置值

您可以使用 app.setValue('selector strategy','selector','value')app.setValue(selector object,'value') 直接设置元素的值。


//Mention the selector strategy followed by the selector itself
//Type the text 'Value' the element with id `org.wikipedia:id/search_container`
app.setValue('id','org.wikipedia:id/search_src_text','Value')

//Mention a selector object and index //Type 'Value' in the nth element with id `org.wikipedia:id/search_src_text` app.setValue({selector: 'org.wikipedia:id/search_src_text',locateStrategy: 'id',index: n},'Value')

//Mention the selector strategy followed by the selector itself
//Type the text 'Value' the element with id `org.wikipedia:id/search_container`
app.setValue('id','org.wikipedia:id/search_src_text','Value')

//Mention a selector object and index //Type 'Value' in the nth element with id `org.wikipedia:id/search_src_text` app.setValue({selector: 'org.wikipedia:id/search_src_text',locateStrategy: 'id',index: n},'Value')

上下文

单个应用程序可以具有多个上下文,例如 web 视图或原生应用程序。管理上下文对于某些流程(例如 Authentication)至关重要,这些流程可能在您的原生应用程序中加载 web 视图。

获取上下文

app.appium.getContext() 获取当前上下文


//Retrieve the current context
const context = await app.appium.getContext()

//Retrieve the current context
const context = await app.appium.getContext()

获取上下文

app.appium.getContexts() 以数组格式获取所有上下文


//Retrieve all the contexts
const context = await app.appium.getContexts()

//Retrieve all the contexts
const context = await app.appium.getContexts()

设置上下文

app.appium.setContext(context) 可用于切换上下文


//Switch the current context to 'WEBVIEW_org.wikipedia'. You can get the context names via getContexts()
await app.appium.setContext('WEBVIEW_org.wikipedia')

//Switch the current context to 'WEBVIEW_org.wikipedia'. You can get the context names via getContexts()
await app.appium.setContext('WEBVIEW_org.wikipedia')

这些命令可用于与操作系统交互以访问操作系统/设备级功能

启动活动

您可以使用 app.appium.startActivity(options) 启动新的活动。选项是一个包含以下参数的 JSON 对象

  1. appPackage STRING:包的名称
  2. appActivity STRING:活动的名称
  3. appWaitPackage STRING:此包启动后,自动化将开始
  4. appWaitActivity STRING:此活动启动后,自动化将开始
  5. intentAction STRING:用于启动活动的意图操作
  6. intentCategory STRING:用于启动活动的意图类别
  7. intentFlags STRING:用于启动活动的标志
  8. optionalIntentArguments STRING:用于启动活动的附加意图参数
  9. dontStopAppOnReset BOOLEAN:重置时是否应停止应用程序

//Start an Activity with package name `com.example` & activity name 'Activity'
app.appium.startActivity({
  appPackage: 'com.example',
  appActivity: 'Activity'
})

//Start an Activity with package name `com.example` & activity name 'Activity'
app.appium.startActivity({
  appPackage: 'com.example',
  appActivity: 'Activity'
})

获取当前活动

使用 app.appium.getCurrentActivity() 获取当前活动名称


//Get current activity name
const activity =  await app.appium.getCurrentActivity();

获取当前包

使用 app.appium.getCurrentPackage() 获取当前包名


//Get current package name
const package =  await app.appium.getCurrentPackage();

获取方向

获取设备的当前方向。返回值将为 POTRAITLANDSCAPE


//Get current orientation
const orientation =  await app.appium.getCurrentOrientation();

设置方向

将设备的方向设置为 LANDSCAPEPOTRAIT


//Set current orientation to LANDSCAPE
await app.appium.setOrientation('LANDSCAPE');

获取地理位置

获取设备的当前地理位置。返回值将包含 latitudelongitudealtitude


//Get current geolocation
const geolocation =  await app.appium.getGeolocation();

设置地理位置

使用 latitudelongitude & altitude 设置设备的地理位置


//Set current geolocation
await app.appium.setGeolocation({latitude:23.03,longitude: 34.23,altitude: 35.03});

按键

使用 app.appium.pressKeyCode(key code) 在键盘上按特定键。键代码值可以在 此处 找到


//Press Keycode Back 
await app.appium.pressKeyCode(4);

这仅在 Android 上有效

长按键

使用 app.appium.longPressKeyCode(key code) 长按键盘上的特定键。键代码值可以在 此处 找到


//Press Keycode Back 
await app.appium.longPressKeyCode(4);

这仅在 Android 上有效

隐藏键盘

使用 app.appium.hideKeyboard() 隐藏键盘


 //Hide keyboard 
await app.appium.hideKeyboard();

键盘是否显示

使用 app.appium.isKeyboardShown() 检查键盘是否显示。这将返回一个布尔值。


 //Is keyboard shown 
const keyboardShown = await app.appium.isKeyboardShown();

现在您已经了解了选择器和命令,您可以继续了解断言如何在 Nightwatch 中工作

断言