अपेक्षा (Expect)
जब आप परीक्षण लिख रहे होते हैं, तो अक्सर आपको यह जांचने की आवश्यकता होती है कि मान कुछ निश्चित शर्तों को पूरा करते हैं। expect
आपको कई "मैचर्स" तक पहुंच प्रदान करता है जो आपको browser
, element
या mock
ऑब्जेक्ट पर विभिन्न चीजों को सत्यापित करने की अनुमति देते हैं।
डिफ़ॉल्ट विकल्प
नीचे दिए गए ये डिफ़ॉल्ट विकल्प कॉन्फ़िग में सेट किए गए waitforTimeout
और waitforInterval
विकल्पों से जुड़े हैं।
केवल नीचे दिए गए विकल्पों को सेट करें अगर आप अपने दावों के लिए विशिष्ट टाइमआउट का इंतजार करना चाहते हैं।
{
wait: 2000, // ms to wait for expectation to succeed
interval: 100, // interval between attempts
}
अगर आप अलग-अलग टाइमआउट और इंटरवल चुनना चाहते हैं, तो इन विकल्पों को इस प्रकार सेट करें:
// wdio.conf.js
import { setOptions } from 'expect-webdriverio'
export const config = {
// ...
before () {
setOptions({ wait: 5000 })
},
// ...
}
मैचर विकल्प
प्रत्येक मैचर कई विकल्प ले सकता है जो आपको दावे को संशोधित करने की अनुमति देता है:
कमांड विकल्प
नाम | प्रकार | विवरण |
---|---|---|
wait | number | अपेक्षा के सफल होने के लिए प्रतीक्षा करने का समय ms में। डिफ़ॉल्ट: 3000 |
interval | number | प्रयासों के बीच का अंतराल। डिफ़ॉल्ट: 100 |
beforeAssertion | function | वह फ़ंक्शन जिसे दावा करने से पहले कॉल किया जाएगा |
afterAssertion | function | वह फ़ंक्शन जिसे दावा करने के बाद कॉल किया जाएगा, जिसमें दावा परिणाम शामिल हैं |
message | string | दावा त्रुटि से पहले जोड़ने के लिए उपयोगकर्ता संदेश |
स्ट्रिंग विकल्प
यह विकल्प कमांड विकल्पों के अतिरिक्त लागू किया जा सकता है जब स्ट्रिंग्स का दावा किया जा रहा हो।
नाम | प्रकार | विवरण |
---|---|---|
ignoreCase | boolean | वास्तविक और अपेक्षित दोनों मानों पर toLowerCase लागू करें |
trim | boolean | वास्तविक मान पर trim लागू करें |
replace | Replacer | Replacer[] | वास्तविक मान के उन हिस्सों को बदलें जो स्ट्रिंग/RegExp से मेल खाते हैं। प्रतिस्थापक एक स्ट्रिंग या फ़ंक्शन हो सकता है। |
containing | boolean | वास्तविक मान में अपेक्षित मान शामिल होने की अपेक्षा करें, अन्यथा सख्त बराबर। |
asString | boolean | प्रॉपर्टी मान को स्ट्रिंग में कन्वर्ट करने के लिए मददगार हो सकता है |
atStart | boolean | वास्तविक मान के अपेक्षित मान से शुरू होने की अपेक्षा करें |
atEnd | boolean | वास्तविक मान के अपेक्षित मान के साथ समाप्त होने की अपेक्षा करें |
atIndex | number | वास्तविक मान में दिए गए इंडेक्स पर अपेक्षित मान होने की अपेक्षा करें |
नंबर विकल्प
यह विकल्प कमांड विकल्पों के अतिरिक्त लागू किया जा सकता है जब नंबरों का दावा किया जा रहा हो।
नाम | प्रकार | विवरण |
---|---|---|
eq | number | बराबर |
lte | number | कम से बराबर |
gte | number | अधिक से बराबर |
HTML एंटिटीज़ का हैंडलिंग
एक HTML एंटिटी टेक्स्ट का एक टुकड़ा ("स्ट्रिंग") है जो एंपरसैंड (&
) से शुरू होता है और सेमीकोलन (;
) पर समाप्त होता है। एंटिटीज़ का उपयोग अक्सर आरक्षित वर्णों (जिन्हें अन्यथा HTML कोड के रूप में व्याख्या किया जाएगा) और अदृश्य वर्णों (जैसे नॉन-ब्रेकिंग स्पेस, जैसे
) को प्रदर्शित करने के लिए किया जाता है।
ऐसे एलिमेंट को खोजने या उसके साथ इंटरैक्ट करने के लिए एंटिटी के यूनिकोड समतुल्य का उपयोग करें। उदाहरण के लिए:
<div data="Some Value">Some Text</div>
const myElem = await $('div[data="Some\u00a0Value"]')
await expect(myElem).toHaveAttribute('data', 'div[Some\u00a0Value')
await expect(myElem).toHaveText('Some\u00a0Text')
आप सभी यूनिकोड संदर्भ HTML स्पेक में पा सकते हैं।
नोट: यूनिकोड केस-इनसेंसिटिव है इसलिए \u00a0
और \u00A0
दोनों काम करते हैं। ब्राउज़र इंस्पेक्ट में एलिमेंट खोजने के लिए, यूनिकोड से u
हटा दें जैसे: div[data="Some\00a0Value"]
ब्राउज़र मैचर्स
toHaveUrl
जांचता है कि ब्राउज़र एक विशिष्ट पेज पर है।
उपयोग
await browser.url('https://webdriver.io/')
await expect(browser).toHaveUrl('https://webdriver.io')
उपयोग
await browser.url('https://webdriver.io/')
await expect(browser).toHaveUrl(expect.stringContaining('webdriver'))
toHaveTitle
जांचता है कि वेबसाइट का एक विशिष्ट शीर्षक है।
उपयोग
await browser.url('https://webdriver.io/')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js')
await expect(browser).toHaveTitle(expect.stringContaining('WebdriverIO'))
toHaveClipboardText
जांचता है कि ब्राउज़र के क्लिपबोर्ड में एक विशिष्ट टेक्स्ट संग्रहीत है।
उपयोग
import { Key } from 'webdriverio'
await browser.keys([Key.Ctrl, 'a'])
await browser.keys([Key.Ctrl, 'c'])
await expect(browser).toHaveClipboardText('some clipboard text')
await expect(browser).toHaveClipboardText(expect.stringContaining('clipboard text'))
एलिमेंट मैचर्स
toBeDisplayed
दिए गए एलिमेंट पर isDisplayed
कॉल करता है।
उपयोग
const elem = await $('#someElem')
await expect(elem).toBeDisplayed()
toExist
दिए गए एलिमेंट पर isExisting
कॉल करता है।
उपयोग
const elem = await $('#someElem')
await expect(elem).toExist()
toBePresent
toExist
के समान।
उपयोग
const elem = await $('#someElem')
await expect(elem).toBePresent()
toBeExisting
toExist
के समान।
उपयोग
const elem = await $('#someElem')
await expect(elem).toBeExisting()
toBeFocused
जांचता है कि एलिमेंट पर फोकस है। यह दावा केवल वेब संदर्भ में काम करता है।
उपयोग
const elem = await $('#someElem')
await expect(elem).toBeFocused()
toHaveAttribute
जांचता है कि एलिमेंट का एक निश्चित विशेषता विशिष्ट मान के साथ है।
उपयोग
const myInput = await $('input')
await expect(myInput).toHaveAttribute('class', 'form-control')
await expect(myInput).toHaveAttribute('class', expect.stringContaining('control'))