Selektorer
WebdriverIO MCP-servern stöder flera selektorstrategier för att lokalisera element på webbsidor och mobilappar.
För omfattande selektordokumentation inklusive alla WebdriverIO selektorstrategier, se huvudguiden Selektorer. Denna sida fokuserar på selektorer som vanligtvis används med MCP-servern.
Webbselektorer
För webbläsarautomatisering stöder MCP-servern alla standard WebdriverIO-selektorer. De mest använda inkluderar:
| Selektor | Exempel | Beskrivning |
|---|---|---|
| CSS | #login-button, .submit-btn | Standard CSS-selektorer |
| XPath | //button[@id='submit'] | XPath-uttryck |
| Text | button=Submit, a*=Click | WebdriverIO textselektorer |
| ARIA | aria/Submit Button | Tillgänglighetsnamnsselektorer |
| Test ID | [data-testid="submit"] | Rekommenderas för testning |
För detaljerade exempel och bästa praxis, se Selektorer dokumentationen.
Mobilselektorer
Mobilselektorer fungerar med både iOS- och Android-plattformar genom Appium.
Accessibility ID (Rekommenderas)
Tillgänglighets-ID:n är den mest pålitliga plattformsoberoende selektorn. De fungerar på både iOS och Android och är stabila genom appuppdateringar.
# Syntax
~accessibilityId
# Examples
~loginButton
~submitForm
~usernameField
Prioritera alltid tillgänglighets-ID:n när de är tillgängliga. De ger:
- Plattformskompatibilitet (iOS + Android)
- Stabilitet genom UI-förändringar
- Bättre testunderhåll
- Förbättrad tillgänglighet för din app
Android-selektorer
UiAutomator
UiAutomator-selektorer är kraftfulla och snabba för Android.
# By Text
android=new UiSelector().text("Login")
# By Partial Text
android=new UiSelector().textContains("Log")
# By Resource ID
android=new UiSelector().resourceId("com.example:id/login_button")
# By Class Name
android=new UiSelector().className("android.widget.Button")
# By Description (Accessibility)
android=new UiSelector().description("Login button")
# Combined Conditions
android=new UiSelector().className("android.widget.Button").text("Login")
# Scrollable Container
android=new UiScrollable(new UiSelector().scrollable(true)).scrollIntoView(new UiSelector().text("Item"))
Resource ID
Resurs-ID:n ger stabil elementidentifiering på Android.
# Full Resource ID
id=com.example.app:id/login_button
# Partial ID (app package inferred)
id=login_button
XPath (Android)
XPath fungerar på Android men är långsammare än UiAutomator.
# By Class and Text
//android.widget.Button[@text='Login']
# By Resource ID
//android.widget.EditText[@resource-id='com.example:id/username']
# By Content Description
//android.widget.ImageButton[@content-desc='Menu']
# Hierarchical
//android.widget.LinearLayout/android.widget.Button[1]
iOS-selektorer
Predicate String
iOS Predicate Strings är snabba och kraftfulla för iOS-automatisering.
# By Label
-ios predicate string:label == "Login"
# By Partial Label
-ios predicate string:label CONTAINS "Log"
# By Name
-ios predicate string:name == "loginButton"
# By Type
-ios predicate string:type == "XCUIElementTypeButton"
# By Value
-ios predicate string:value == "ON"
# Combined Conditions
-ios predicate string:type == "XCUIElementTypeButton" AND label == "Login"
# Visibility
-ios predicate string:label == "Login" AND visible == 1
# Case Insensitive
-ios predicate string:label ==[c] "login"
Predicate-operatorer:
| Operator | Beskrivning |
|---|---|
== | Lika med |
!= | Inte lika med |
CONTAINS | Innehåller delstring |
BEGINSWITH | Börjar med |
ENDSWITH | Slutar med |
LIKE | Wildcard-matchning |
MATCHES | Regex-matchning |
AND | Logisk OCH |
OR | Logisk ELLER |
Class Chain
iOS Class Chains ger hierarkisk elementlokalisering med bra prestanda.
# Direct Child
-ios class chain:**/XCUIElementTypeButton[`label == "Login"`]
# Any Descendant
-ios class chain:**/XCUIElementTypeButton
# By Index
-ios class chain:**/XCUIElementTypeCell[3]
# Combined with Predicate
-ios class chain:**/XCUIElementTypeButton[`name == "submit" AND visible == 1`]
# Hierarchical
-ios class chain:**/XCUIElementTypeTable/XCUIElementTypeCell[`label == "Settings"`]
# Last Element
-ios class chain:**/XCUIElementTypeButton[-1]
XPath (iOS)
XPath fungerar på iOS men är långsammare än predicate strings.
# By Type and Label
//XCUIElementTypeButton[@label='Login']
# By Name
//XCUIElementTypeTextField[@name='username']
# By Value
//XCUIElementTypeSwitch[@value='1']
# Hierarchical
//XCUIElementTypeTable/XCUIElementTypeCell[1]
Plattformsoberoende selektorstrategi
När du skriver tester som behöver fungera på både iOS och Android, använd denna prioritetsordning: