தனிப்பயன் கட்டளைகள்
நீங்கள் உங்களது சொந்த கட்டளைகளுடன் browser நிகழ்வை விரிவுபடுத்த விரும்பினால், உலாவி முறை addCommand உங்களுக்காக இங்கே உள்ளது. உங்கள் ஸ்பெக்களில் உள்ளதைப் போலவே, நீங்கள் உங்கள் கட்டளையை ஒரு ஒத்திசைவற்ற (asynchronous) வழியில் எழுதலாம்.
அளவுருக்கள்
கட்டளை பெயர்
கட்டளையை வரையறுக்கும் மற்றும் உலாவி அல்லது கூறு நோக்கத்துடன் இணைக்கப்படும் ஒரு பெயர்.
வகை: String
தனிப்பயன் செயல்பாடு
கட்டளை அழைக்கப்படும்போது செயல்படுத்தப்படும் ஒரு செயல்பாடு. this நோக்கம் WebdriverIO.Browser அல்லது WebdriverIO.Element ஆகும், கட்டளை உலாவி அல்லது கூறு நோக்கத்துடன் இணைக்கப்பட்டுள்ளதா என்பதைப் பொறுத்து.
வகை: Function
விருப்பங்கள்
தனிப்பயன் கட்டளை நடத்தையை மாற்றியமைக்கும் உள்ளமைவு விருப்பங்களுடன் கூடிய பொருள்
இலக்கு நோக்கம்
கட்டளையை உலாவி அல்லது கூறு நோக்கத்துடன் இணைக்க வேண்டுமா என்பதைத் தீர்மானிக்கும் கொடி. true என அமைக்கப்பட்டால் கட்டளை ஒரு கூறு கட்டளையாக இருக்கும்.
விருப்ப பெயர்: attachToElement
வகை: Boolean
இயல்புநிலை: false
implicitWait ஐ முடக்கு
தனிப்ப யன் கட்டளையை அழைப்பதற்கு முன் கூறு இருப்பதற்காக மறைமுகமாக காத்திருக்க வேண்டுமா என்பதைத் தீர்மானிக்கும் கொடி.
விருப்ப பெயர்: disableElementImplicitWait
வகை: Boolean
இயல்புநிலை: false
உதாரணங்கள்
இந்த உதாரணம் தற்போதைய URL மற்றும் தலைப்பை ஒரே முடிவாக திருப்பும் ஒரு புதிய கட்டளையை எவ்வாறு சேர்ப்பது என்பதைக் காட்டுகிறது. நோக்கம் (this) ஒரு WebdriverIO.Browser பொருளாகும்.
browser.addCommand('getUrlAndTitle', async function (customVar) {
// `this` refers to the `browser` scope
return {
url: await this.getUrl(),
title: await this.getTitle(),
customVar: customVar
}
})
கூடுதலாக, இறுதி அளவுருவாக true ஐ அனுப்புவதன் மூலம், உங்கள் சொந்த கட்டளைகளுடன் கூறு நிகழ்வை நீங்கள் விரிவுபடுத்தலாம். இந்த சந்தர்ப்பத்தில் நோக்கம் (this) ஒரு WebdriverIO.Element பொருளாகும்.
browser.addCommand("waitAndClick", async function () {
// `this` is return value of $(selector)
await this.waitForDisplayed()
await this.click()
}, { attachToElement: true })
இயல்பாக, கூறு தனிப்பயன் கட்டளைகள் தனிப்பயன் கட்டளையை அழைப்பதற்கு முன் கூறு இருப்பதற்காக காத்திருக்கும். பெரும்பாலான நேரங்களில் இது விரும்பப்படுகிறது, ஆனால் தேவையில்லை என்றால், disableImplicitWait மூலம் முடக்கலாம்:
browser.addCommand("waitAndClick", async function () {
// `this` is return value of $(selector)
await this.waitForExists()
await this.click()
}, { attachToElement: true, disableElementImplicitWait: true })
தனிப்பயன் கட்டளைகள் உங்களுக்கு அடிக்கடி பயன்படுத்தும் ஒரு குறிப்பிட்ட கட்டளை வரிசையை ஒற்றை அழைப்பாக கட்டமைக்க வாய்ப்பளிக்கிறது. உங்கள் சோதனை தொகுப்பில் எந்த நேரத்திலும் நீங்கள் தனிப்பயன் கட்டளைகளை வரையறுக்கலாம்; கட்டளை முதல் முறை பயன்படுத்தப்படுவதற்கு முன் வரையறுக்கப்பட்டுள்ளது என்பதை உறுதிப்படுத்தவும். (உங்கள் wdio.conf.js இல் before ஹுக் அவற்றை உருவாக்க ஒரு நல்ல இடம்.)
வரையறுக்கப்பட்ட பின்னர், நீங்கள் அவற்றைப் பின்வருமாறு பயன்படுத்தலாம்:
it('should use my custom command', async () => {
await browser.url('http://www.github.com')
const result = await browser.getUrlAndTitle('foobar')
assert.strictEqual(result.url, 'https://github.com/')
assert.strictEqual(result.title, 'GitHub · Where software is built')
assert.strictEqual(result.customVar, 'foobar')
})
குறிப்பு: நீங்கள் browser நோக்கத்திற்கு ஒரு தனிப்பயன் கட்டளையைப ் பதிவு செய்தால், கட்டளை கூறுகளுக்கு அணுகக்கூடியதாக இருக்காது. அதேபோல், நீங்கள் கூறு நோக்கத்திற்கு ஒரு கட்டளையைப் பதிவு செய்தால், அது browser நோக்கத்தில் அணுகக்கூடியதாக இருக்காது:
browser.addCommand("myCustomBrowserCommand", () => { return 1 })
const elem = await $('body')
console.log(typeof browser.myCustomBrowserCommand) // outputs "function"
console.log(typeof elem.myCustomBrowserCommand()) // outputs "undefined"
browser.addCommand("myCustomElementCommand", () => { return 1 }, { attachToElement: true })
const elem2 = await $('body')
console.log(typeof browser.myCustomElementCommand) // outputs "undefined"
console.log(await elem2.myCustomElementCommand('foobar')) // outputs "1"
const elem3 = await $('body')
elem3.addCommand("myCustomElementCommand2", () => { return 2 })
console.log(typeof browser.myCustomElementCommand2) // outputs "undefined"
console.log(await elem3.myCustomElementCommand2('foobar')) // outputs "2"
குறிப்பு: நீங்கள் ஒரு தனிப்பயன் கட்டளையை சங்கிலியாக்க வேண்டியிருந்தால், கட்டளை $ உடன் முடிய வேண்டும்,
browser.addCommand("user$", (locator) => { return ele })
browser.addCommand("user$", (locator) => { return ele }, { attachToElement: true })
await browser.user$('foo').user$('bar').click()
மிக அதிகமான தனிப்பயன் கட்டளைகளால் browser நோக்கத்தை அதிகப்படுத்துவதைத் தவிர்க்க கவனமாக இருங்கள்.
தனிப்பயன் தர்க்கத்தை பக்க பொருள்களில் வரையறுப்பதை நாங்கள் பரிந்துரைக்கிறோம், இதனால் அவை ஒரு குறிப்பிட்ட பக்கத்துடன் பிணைக்கப்பட்டுள்ளன.