النقر
ينفذ إيماءة نقر على:
- العنصر المحدد. سيقوم بالتمرير تلقائيًا إذا لم يتمكن من العثور عليه.
- أو على الشاشة في جهاز محمول من خلال توفير إحداثيات
x
وy
داخلياً يستخدم:
- نقر العنص ر:
- أمر
click
لبيئات الويب (متصفحات Chrome/Safari، أو التطبيقات الهجينة) - أندرويد
mobile: clickGesture
أو iOSmobile: tap
للتطبيقات الأصلية، بما في ذلك أمرscrollIntoView
للتمرير التلقائي
- أمر
- نقر الشاشة:
- أمر
action
لبيئات الويب (متصفحات Chrome/Safari، أو التطبيقات الهجينة) - أندرويد
mobile: clickGesture
أو iOSmobile: tap
للتطبيقات الأصلية
- أمر
هذا الاختلاف يجعل أمر tap
بديلاً أكثر موثوقية لأمر click
للتطبيقات المحمولة.
بالنسبة للتطبيقات الأصلية، يختلف هذا الأمر عن أمر click
لأنه سيقوم تلقائيًا بالسحب إلى العنصر باستخدام أمر scrollIntoView
،
والذي لا يدعم للتطبيقات الأصلية مع أمر click
. في التطبيقات الهجينة أو بيئات الويب، يتم دعم التمرير التلقائي لكل من أوامر click
و tap
.
يعمل هذا الأمر فقط مع المكونات التالية المحدثة:
- خادم Appium (الإصدار 2.0.0 أو أعلى)
appium-uiautomator2-driver
(لأندرويد)appium-xcuitest-driver
(لـ iOS)
تأكد من تحديث بيئة Appium المحلية أو السحابية بانتظام لتجنب مشاكل التوافق.
إذا كنت ترغب في النقر على إحداثية محددة على الشاشة وتستخدم لقطة شاشة لتحديد الإحداثيات، تذكر أن الإحداثيات لنظام iOS تعتمد على حجم شاشة الجهاز، وليس حجم لقطة الشاشة. حجم لقطة الشاشة أكبر بسبب نسبة بكسل الجهاز. متوسط نسبة بكسل الجهاز حتى iPhone 8 وأجهزة iPad الحالية هو 2، وبالنسبة لأجهزة iPhone من iPhone X فصاعدًا، النسبة هي 3. هذا يعني أن حجم ل قطة الشاشة أكبر بمرتين أو 3 مرات من حجم شاشة الجهاز مما يعني أنه إذا وجدت الإحداثيات على لقطة الشاشة، قسمها على نسبة بكسل الجهاز للحصول على إحداثيات الشاشة الصحيحة. على سبيل المثال:
const screenshotCoordinates = { x: 600, y: 900 };
const dpr = 3; // مثال لـ iPhone 16
const screenCoordinates = {
x: screenshotCoordinates.x / dpr,
y: screenshotCoordinates.y / dpr
};
await browser.tap(screenCoordinates);
المعلمات
الاسم | النوع | التفاصيل |
---|---|---|
options اختياري | TapOptions | خيارات النقر (اختياري) |
خيارات نقر العنصر | ||
options.x اختياري | number | رقم (اختياري، إلزامي إذا تم تعيين y) فقط لنقر الشاشة، وليس لنقر العنصر |
options.y اختياري | number | رقم (اختياري، إلزامي إذا تم تعيين x) فقط لنقر الشاشة، وليس لنقر العنصر |
خيارات نقر الشاشة | ||
options.direction اختياري | string | يمكن أن تكون واحدة من down ، up ، left أو right ، الافتراضي هو down . فقط لنقر العنصر، وليس لنقر الشاشة للتطبيقات المحمولة الأصلية فقط |
options.maxScrolls اختياري | number | الحد الأقصى لعدد التمريرات حتى يتوقف عن البحث عن العنصر، الافتراضي هو 10 . فقط لنقر العنصر، وليس لنقر الشاشة للتطبيقات المحمولة الأصلية فقط |
options.scrollableElement اختياري | Element | العنصر المستخدم للتمرير داخله. إذا لم يتم توفير عنصر، فسيستخدم المحدد التالي لنظام iOS -ios predicate string:type == "XCUIElementTypeApplication" والتالي لنظام Android //android.widget.ScrollView' . إذا كان هناك أكثر من عنصر يطابق المحدد الافتراضي، فبشكل افتراضي سيختار أول عنصر مطابق. فقط لنقر العنصر، وليس لنقر الشاشة للتطبيقات المحمولة الأصلية فقط |
أمثلة
it('should be able to tap an on element', async () => {
const elem = $('~myElement')
// It will automatically scroll to the element if it's not already in the viewport
await elem.tap()
})
it('should be able to swipe right 3 times in a custom scroll areas to an element and tap on the element', async () => {
const elem = $('~myElement')
// Swipe right 3 times in the custom scrollable element to find the element
await elem.tap({
direction: 'right',
maxScrolls: 3,
scrollableElement: $('#scrollable')
})
})
it('should be able to tap on screen coordinates', async () => {
await browser.tap({ x: 200, y: 400 })
})