ضربهزدن
انجام حرکت ضربه زدن روی:
- یا عنصر مشخص شده. به طور خودکار اسکرول میکند اگر نتواند آن را پیدا کند.
- یا صفحه نمایش دستگاه موبایل با ارائه مختصات
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' . اگر عناصر بیشتری با انتخابگر پیشفرض مطابقت داشته باشند، به طور پیشفرض اولین عنصر مطابق را انتخاب میکند. فقط برای ضربه زدن به عنصر، نه برای ضربه زدن به صفحه نمایش فقط-برنامه-بومی-موبایل |
مثالها
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 })
})