انتقل إلى المحتوى
CloudClick iOS

Selectors

A selector only builds an element object and does not look anything up yet; the lookup happens when you call exists / click / getText / getRect. Compared with findElement it can pick the n-th match and include hidden elements, but it does not wait.

نظرة عامة

  • ·Selector names match the values of findElement's first argument one to one
  • ·accessibilityId is the most stable: it does not change with the UI language or copy edits
  • ·xpath is flexible but slow — prefer classChain / predicate when they can express the same thing

client.label#

Match elements whose text is exactly the value.

typescript
client.label(value: string, visibleOnly?: boolean, index?: number): Element;

المعاملات

الاسمالنوعمطلوبالقيمة الافتراضيةالوصف
valuestringنعم—The element's text; must match exactly.
visibleOnlybooleanلاtrueOnly match visible elements. Pass false to include hidden ones (covered, or scrolled off screen).
indexnumberلا0Which match to take when there are several, counting from 0.

القيمة المُعادة

النوعالوصف
ElementAn element object. Nothing is looked up yet — the lookup happens when you call exists / click / getText / getRect.

مثال

javascript
var ok = client.label('OK');
if (ok.exists()) {
  ok.click();
}
var second = client.label('Follow', true, 1);   // the second "Follow"

انظر أيضًا client.labelContains、findElement

client.labelContains#

Match elements whose text contains the value.

typescript
client.labelContains(value: string, visibleOnly?: boolean, index?: number): Element;

المعاملات

الاسمالنوعمطلوبالقيمة الافتراضيةالوصف
valuestringنعم—The text to look for inside the element's text.
visibleOnlybooleanلاtrueOnly match visible elements. Pass false to include hidden ones (covered, or scrolled off screen).
indexnumberلا0Which match to take when there are several, counting from 0.

القيمة المُعادة

النوعالوصف
ElementAn element object. Nothing is looked up yet — the lookup happens when you call exists / click / getText / getRect.

مثال

javascript
var follow = client.labelContains('Follow');
if (follow.exists()) {
  follow.click();
}

انظر أيضًا client.label

client.accessibilityId#

Match by the element's name (its accessibilityIdentifier, set by the app's developer). The most stable way to locate an element: it does not change with the UI language or copy edits.

typescript
client.accessibilityId(value: string, visibleOnly?: boolean, index?: number): Element;

المعاملات

الاسمالنوعمطلوبالقيمة الافتراضيةالوصف
valuestringنعم—The element's name. Click the element in the console's inspector to see it.
visibleOnlybooleanلاtrueOnly match visible elements. Pass false to include hidden ones (covered, or scrolled off screen).
indexnumberلا0Which match to take when there are several, counting from 0.

القيمة المُعادة

النوعالوصف
ElementAn element object. Nothing is looked up yet — the lookup happens when you call exists / click / getText / getRect.

مثال

javascript
var submit = client.accessibilityId('submit_button');
if (submit.exists()) {
  submit.click();
}

انظر أيضًا findElement

client.xpath#

Match by XPath. Flexible but slow: the whole element tree is serialised before the query runs, which can take seconds on busy screens.

typescript
client.xpath(value: string): Element;

المعاملات

الاسمالنوعمطلوبالقيمة الافتراضيةالوصف
valuestringنعم—The XPath expression. The first match is used; write (//expression)[n] for the n-th.

القيمة المُعادة

النوعالوصف
ElementAn element object. Nothing is looked up yet — the lookup happens when you call exists / click / getText / getRect.

ملاحظات

  • If classChain or predicate can express it, do not use XPath.

مثال

javascript
var btn = client.xpath('//XCUIElementTypeButton[@name="OK"]');
if (btn.exists()) {
  btn.click();
}

انظر أيضًا client.classChain、client.predicate

client.classChain#

Match by an iOS class chain — much faster than XPath.

typescript
client.classChain(value: string, index?: number): Element;

المعاملات

الاسمالنوعمطلوبالقيمة الافتراضيةالوصف
valuestringنعم—The class chain, for example **/XCUIElementTypeCell[`label CONTAINS "General"`].
indexnumberلا0Which match to take when there are several, counting from 0.

القيمة المُعادة

النوعالوصف
ElementAn element object. Nothing is looked up yet — the lookup happens when you call exists / click / getText / getRect.

مثال

javascript
var cell = client.classChain('**/XCUIElementTypeButton[`label == "OK"`]');
if (cell.exists()) {
  cell.click();
}

انظر أيضًا client.predicate、client.xpath

client.predicate#

Match with an NSPredicate expression.

typescript
client.predicate(value: string, index?: number): Element;

المعاملات

الاسمالنوعمطلوبالقيمة الافتراضيةالوصف
valuestringنعم—The predicate, for example label BEGINSWITH 'Con' or type == 'XCUIElementTypeButton' AND visible == true.
indexnumberلا0Which match to take when there are several, counting from 0.

القيمة المُعادة

النوعالوصف
ElementAn element object. Nothing is looked up yet — the lookup happens when you call exists / click / getText / getRect.

مثال

javascript
var btn = client.predicate('type == "XCUIElementTypeButton" AND label CONTAINS "Follow"');
if (btn.exists()) {
  btn.click();
}

انظر أيضًا client.classChain

client.className#

Match by element type, for example XCUIElementTypeCell or XCUIElementTypeSwitch.

typescript
client.className(value: string, index?: number): Element;

المعاملات

الاسمالنوعمطلوبالقيمة الافتراضيةالوصف
valuestringنعم—The element type name.
indexnumberلا0Which match to take when there are several, counting from 0.

القيمة المُعادة

النوعالوصف
ElementAn element object. Nothing is looked up yet — the lookup happens when you call exists / click / getText / getRect.

مثال

javascript
var firstCell = client.className('XCUIElementTypeCell', 0);
if (firstCell.exists()) {
  firstCell.click();
}

انظر أيضًا client.predicate