انتقل إلى المحتوى الرئيسي

النقر

ينفذ إيماءة نقر على:

  • العنصر المحدد. سيقوم بالتمرير تلقائيًا إذا لم يتمكن من العثور عليه.
  • أو على الشاشة في جهاز محمول من خلال توفير إحداثيات x و y

داخلياً يستخدم:

  • نقر العنصر:
    • أمر click لبيئات الويب (متصفحات Chrome/Safari، أو التطبيقات الهجينة)
    • أندرويد mobile: clickGesture أو iOS mobile: tap للتطبيقات الأصلية، بما في ذلك أمر scrollIntoView للتمرير التلقائي
  • نقر الشاشة:
    • أمر action لبيئات الويب (متصفحات Chrome/Safari، أو التطبيقات الهجينة)
    • أندرويد mobile: clickGesture أو iOS mobile: 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'. إذا كان هناك أكثر من عنصر يطابق المحدد الافتراضي، فبشكل افتراضي سيختار أول عنصر مطابق.
فقط لنقر العنصر، وليس لنقر الشاشة
للتطبيقات المحمولة الأصلية فقط
أمثلة
element.tap.example.js
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()
})

element.tap.scroll.options.example.js
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')
})
})

screen.tap.example.js
it('should be able to tap on screen coordinates', async () => {
await browser.tap({ x: 200, y: 400 })
})

Welcome! How can I help?

WebdriverIO AI Copilot