پرش به محتوای اصلی

ضربه‌زدن

انجام حرکت ضربه زدن روی:

  • یا عنصر مشخص شده. به طور خودکار اسکرول می‌کند اگر نتواند آن را پیدا کند.
  • یا صفحه نمایش دستگاه موبایل با ارائه مختصات x و y

داخلی از این موارد استفاده می‌کند:

  • ضربه زدن به عنصر:
    • دستور click برای محیط‌های وب (مرورگرهای کروم/سافاری، یا برنامه‌های هیبریدی)
    • mobile: clickGesture اندروید یا mobile: tap iOS برای برنامه‌های بومی، شامل دستور scrollIntoView برای اسکرول خودکار
  • ضربه زدن به صفحه نمایش:
    • دستور action برای محیط‌های وب (مرورگرهای کروم/سافاری، یا برنامه‌های هیبریدی)
    • mobile: clickGesture اندروید یا mobile: tap iOS برای برنامه‌های بومی

این تفاوت، دستور tap را به گزینه‌ای قابل اعتمادتر نسبت به دستور click برای برنامه‌های موبایل تبدیل می‌کند.

برای برنامه‌های بومی، این دستور با دستور click متفاوت است زیرا به طور خودکار به سمت عنصر اسکرول می‌کند با استفاده از دستور scrollIntoView، که برای برنامه‌های بومی با دستور click پشتیبانی نمی‌شود. در برنامه‌های هیبریدی یا محیط‌های وب، اسکرول خودکار برای هر دو دستور click و tap پشتیبانی می‌شود.

اطلاعات

این دستور فقط با اجزای به‌روز زیر کار می‌کند:

  • سرور Appium (نسخه 2.0.0 یا بالاتر)
  • appium-uiautomator2-driver (برای اندروید)
  • appium-xcuitest-driver (برای iOS)

اطمینان حاصل کنید که محیط Appium محلی یا مبتنی بر ابر شما به طور منظم به‌روزرسانی می‌شود تا از مشکلات سازگاری جلوگیری شود.

برای ضربه‌های صفحه نمایش

اگر می‌خواهید روی مختصات خاصی از صفحه نمایش ضربه بزنید و از اسکرین‌شات برای تعیین مختصات استفاده می‌کنید، به یاد داشته باشید که مختصات برای iOS بر اساس اندازه صفحه نمایش دستگاه است، نه اندازه اسکرین‌شات. اندازه اسکرین‌شات به دلیل نسبت پیکسل دستگاه بزرگتر است. متوسط نسبت پیکسل دستگاه تا آیفون 8 و آیپدهای فعلی 2 است، برای آیفون‌ها از آیفون X به بعد نسبت 3 است. این بدان معناست که اندازه اسکرین‌شات 2 یا 3 برابر بزرگتر از اندازه صفحه نمایش دستگاه است که به این معنی است که اگر مختصات را روی اسکرین‌شات پیدا می‌کنید، آنها را بر نسبت پیکسل دستگاه تقسیم کنید تا مختصات صحیح صفحه را به دست آورید. برای مثال:

const screenshotCoordinates = { x: 600, y: 900 };
const dpr = 3; // مثال برای آیفون 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.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