webdriver listeners selenium
WebDriver श्रोता क्या हैं? हमें सेलेनियम स्वचालन परीक्षण में श्रोताओं की आवश्यकता क्यों है? यह ट्यूटोरियल नमूना कोड उदाहरणों के साथ विस्तार से इन सवालों के जवाब देता है:
श्रोता, जैसा कि नाम से पता चलता है, सेलेनियम कोड में निर्धारित किसी भी घटना के लिए 'सुनो'। उदाहरण के लिए, यदि आप जानना चाहते हैं कि किसी भी तत्व को क्लिक करने से पहले क्या होता है; पहले और बाद में आप एक तत्व पर नेविगेट करते हैं, या क्या होता है जब एक अपवाद फेंक दिया जाता है और परीक्षण विफल हो जाता है, श्रोता काम में आते हैं।
सेलेनियम ऑटोमेशन टेस्टिंग में श्रोताओं का व्यावहारिक उपयोग कार्यों के क्रम को लॉग करने और एक अपवाद को फेंकने के रूप में स्क्रीनशॉट लेने के लिए हो सकता है। यह परीक्षण निष्पादन के बाद के चरणों में आसान डिबगिंग की सुविधा प्रदान करता है।
=> यहाँ सभी सेलेनियम ट्यूटोरियल की जाँच करें।
आप क्या सीखेंगे:
वेबड्राइवर श्रोताओं का कार्यान्वयन
मुख्य रूप से दो प्रकार के श्रोता होते हैं:
- वेबड्राइवर श्रोताओं
- TestNG श्रोताओं
हम पहले समझेंगे कि वेबड्राइवर श्रोता कैसे काम करते हैं। इस ट्यूटोरियल में, हमारा फोकस वेबड्राइवर ईवेंट श्रोता पर होगा।
हम वेबड्राइवर ईवेंट श्रोता का उपयोग क्यों करते हैं?
वेबड्राइवर की सहायता से, हम ब्राउज़र और वेब एलिमेंट्स पर बहुत सारी घटनाओं को ट्रिगर करने में सक्षम हैं। यह निष्पादन के दौरान ट्रिगर होने वाली सभी घटनाओं का ट्रैक रखता है और निष्पादन पूर्ण होने पर डिबगिंग में हमारी मदद कर सकता है।
वेबड्राइवर ईवेंट श्रोताओं को लागू करने के दो तरीके हैं:
- WebDriverEventListener जो कि एक इंटरफ़ेस है जिसमें वेबड्राइवर घटनाओं को ट्रैक करने के लिए कुछ पूर्वनिर्धारित तरीके हैं। इसे हमें लागू करने की आवश्यकता है सब इंटरफ़ेस में पूर्वनिर्धारित तरीके।
- AbstractWebDriverEventListener वर्ग जो हमें केवल उन विधियों को लागू करने की सुविधा प्रदान करता है जिनमें हम रुचि रखते हैं।
# 1) WebDriverEventListener इंटरफ़ेस
WebDriverEventListener इंटरफ़ेस को लागू करने के लिए उपयोग किए जाने वाले पूर्वनिर्धारित तरीके नीचे सूचीबद्ध हैं:
(i) शून्य से पहले बदलें VueueOf (WebElement arg0, WebDriver arg1, CharSequence () arg2)
जब हम या तो SendKeys () या स्पष्ट () वेब तत्व पर कार्रवाई करते हैं तो यह विधि शुरू हो जाती है। (उदाहरण के लिए, driver.findElement (By.id ('लॉगिन')) स्पष्ट (), और ट्रिगर किया गया है इससे पहले वेब तत्व पर ऑपरेशन करना।
पैरामीटर:
arg0= Web Element arg1=driver
(ii) शून्य afterChangeValueOf (WebElement arg0, WebDriver arg1, CharSequence () arg2)
जब हम या तो SendKeys () या स्पष्ट () वेब तत्व पर कार्रवाई करते हैं तो यह विधि शुरू हो जाती है। (उदाहरण के लिए, driver.findElement (By.id ('लॉगिन')) स्पष्ट (), और ट्रिगर किया गया है उपरांत वेब तत्व पर ऑपरेशन करना।
पैरामीटर:
arg0= Web Element arg1=driver
(iii) क्लीकऑनऑन से पहले शून्य (WebElement arg0, WebDriver arg1)
यह विधि चालू है इससे पहले हम किसी भी वेब तत्व पर क्लिक करते हैं।
पैरामीटर:
arg0= Web Element arg1=driver
(iv) शून्य afterClickOn (WebElement arg0, WebDriver arg1)
कैसे एक अच्छा परीक्षण के मामले लिखने के लिए
यह विधि चालू है उपरांत हम किसी भी वेब तत्व पर क्लिक करते हैं।
पैरामीटर:
arg0= Web Element arg1=driver
(v) शून्य से पहले शून्य करें (स्ट्रिंग arg0, WebDriver arg1)
जब हम नेविगेट ()। (स्ट्रिंग URL) (उदाहरण के लिए, नेविगेट करें (), से ('https) // का उपयोग करते हैं तो यह विधि चालू हो जाती है। www.google.com ))), और शुरू हो रहा है इससे पहले URL में नेविगेट करना।
पैरामीटर:
arg0= URL arg1=driver
(vi) शून्य के बाद शून्य करें (स्ट्रिंग arg0, WebDriver arg1)
जब हम नेविगेट ()। (स्ट्रिंग URL) (उदाहरण के लिए, नेविगेट करें (), से ('https) // का उपयोग करते हैं तो यह विधि चालू हो जाती है। www.google.com ))), और शुरू हो रहा है उपरांत URL में नेविगेट करना।
पैरामीटर:
arg0= URL arg1=driver
(vii) शून्य से पहले शून्य (WebDriver arg0)
जब हम कमांड नेविगेट ()। बैक () का उपयोग करते हैं तो यह विधि शुरू हो जाती है। यह जगह लेता है इससे पहले उपयोगकर्ता को पिछले पृष्ठ पर पुनर्निर्देशित करना।
पैरामीटर:
arg0=driver
(viii) शून्य afterNavigateBack (WebDriver arg0)
जब हम कमांड नेविगेट ()। बैक () का उपयोग करते हैं तो यह विधि शुरू हो जाती है। यह जगह लेता है उपरांत उपयोगकर्ता को पिछले पृष्ठ पर पुनर्निर्देशित करना।
पैरामीटर:
arg0=driver
(ix) शून्य से पहले शून्य करें (WebDriver arg0)
जब हम कमांड नेविगेट () फॉरवर्ड () का उपयोग करते हैं तो यह विधि शुरू हो जाती है। यह जगह लेता है इससे पहले उपयोगकर्ता को अगले पृष्ठ पर पुनर्निर्देशित करना।
पैरामीटर:
arg0=driver
(x) शून्य के बाद शून्य (वेबड्राइवर arg0)
जब हम कमांड नेविगेट () फॉरवर्ड () का उपयोग करते हैं तो यह विधि शुरू हो जाती है। यह जगह लेता है उपरांत उपयोगकर्ता को अगले पृष्ठ पर पुनर्निर्देशित करना।
पैरामीटर:
arg0=driver
(xi) शून्य से पहले शून्यपरिप्रेश (वेबड्राइवर arg0)
जब हम कमांड नेविगेट () रिफ्रेश () का उपयोग करते हैं तो यह विधि शुरू हो जाती है। यह जगह लेता है इससे पहले वर्तमान पृष्ठ को ताज़ा करना।
पैरामीटर:
arg0=driver
(xii) शून्य के बाद शून्यप्रकाश (वेबड्राइवर arg0)
जब हम कमांड नेविगेट () रिफ्रेश () का उपयोग करते हैं तो यह विधि शुरू हो जाती है। यह जगह लेता है उपरांत वर्तमान पृष्ठ को ताज़ा करना।
पैरामीटर:
arg0=driver
(xiii) शून्य से पहले शून्य (arg0, WebElement arg1, WebDrivergg3 द्वारा)
जब हम कमांड का उपयोग करते हैं तो यह विधि शुरू हो जाती है Driver.findElement (By.id ('कुछ आईडी या कोई अन्य लोकेटर')) । यह जगह लेता है इससे पहले वेब तत्व खोजें।
पैरामीटर:
arg0=locator arg1=Web Element arg2=driver
(xiv) बाद में शून्य (Arg0, WebElement arg1, WebDriver arg2)
जब हम कमांड का उपयोग करते हैं तो यह विधि शुरू हो जाती है Driver.findElement (By.id ('कुछ आईडी या कोई अन्य लोकेटर')) । यह जगह लेता है उपरांत वेब तत्व खोजें।
पैरामीटर:
arg0=locator arg1=Web Element arg2=driver
(xv) शून्य onException (Throwable arg0, WebDriver arg1)
जब भी कोई अपवाद फेंका जाता है तो इस विधि को फेंक दिया जाता है। उदाहरण के लिए, यदि वेबड्राइवर तत्व को खोजने में सक्षम नहीं है, तो यह इस पद्धति को ट्रिगर करेगा और इसके अंदर जो भी कोड लिखा है उसे निष्पादित करेगा।
पैरामीटर:
arg0=Exception arg1= driver
(xvi) शून्य से पहले खाली करें (WebDriver arg0)
जब भी कोई अलर्ट बॉक्स स्क्रीन पर दिखाया जाता है और दाईं ओर ट्रिगर किया जाता है, तो यह विधि चालू हो जाती है इससे पहले 'ठीक है या ACCEPT' बटन पर क्लिक करें।
पैरामीटर:
arg0=driver
(xvii) शून्य आफ्टरएक्लेप्ट (वेबड्राइवर arg0)
कृत्रिम बुद्धिमत्ता सॉफ्टवेयर कैसे विकसित किया जाए
जब भी कोई अलर्ट बॉक्स स्क्रीन पर दिखाया जाता है और दाईं ओर ट्रिगर किया जाता है, तो यह विधि चालू हो जाती है उपरांत 'ठीक है या ACCEPT' बटन पर क्लिक करें।
पैरामीटर:
arg0=driver
(xviii) एलर्टडिस्मिस (वेबड्राइवर arg0) से पहले शून्य
जब भी कोई अलर्ट बॉक्स स्क्रीन पर दिखाया जाता है और दाईं ओर ट्रिगर किया जाता है, तो यह विधि चालू हो जाती है इससे पहले 'CANCEL' बटन पर क्लिक करना।
पैरामीटर:
arg0=driver
(xix) शून्य आफ्टरवादवाद (वेबड्राइवर arg0)
जब भी कोई अलर्ट बॉक्स स्क्रीन पर दिखाया जाता है और दाईं ओर ट्रिगर किया जाता है, तो यह विधि चालू हो जाती है उपरांत 'CANCEL' बटन पर क्लिक करना।
पैरामीटर:
arg0=driver
ये सभी विधियाँ हैं जो उपलब्ध हैं WebDriverEventListener। पहलेस्क्रिप्ट और आफ्टरस्क्रिप्ट दो अन्य विधियां हैं लेकिन हम इस ट्यूटोरियल में शामिल नहीं करेंगे।
ग्रहण में 'WebDriverEventListener' इंटरफ़ेस की मदद से श्रोताओं को लागू करने के लिए कदम:
चरण 1: 'श्रोता' के रूप में नाम के साथ एक पैकेज बनाएँ। उस पैकेज के अंदर, 'नामक एक वर्ग बनाएं वेबड्राइवर लिस्ट्रेन ”और इसे लागू करने दें 'WebDriverEventListener' ।
यूआई नीचे की तरह दिखना चाहिए:
अपने माउस को त्रुटि के साथ लाल रेखा पर होवर करें, ग्रहण को 'WebDriverEventLoverener' आयात करने के लिए नीचे दिए गए सुझाव को फेंक देना चाहिए। आयात पर क्लिक करें।
WebDriverEventListener पर त्रुटि समाप्त हो गई है, लेकिन आपको 'WebDriverListeners' वर्ग पर नीचे की त्रुटि दिखाई देगी। कर्सर को त्रुटि पर ले जाएं और आपको Unimplemented मेथड्स जोड़ने का सुझाव दिखाई देगा। उस पर क्लिक करें, और आप देखेंगे कि सभी विधियां सूचीबद्ध हैं और ऊपर वर्णित हैं।
कृपया ध्यान दें कि हमने प्रदर्शन प्रयोजनों के लिए System.out.println लाइन को प्रत्येक विधि में जोड़ा है।
नमूना कोड -1
package Listeners; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.events.WebDriverEventListener; public class WebDriverListeners implements WebDriverEventListener { @Override public void afterAlertAccept(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Alert Accept '+arg0.toString() ); } @Override public void afterAlertDismiss(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Alert Dismiss '+ arg0); } @Override public void afterChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('After value change of' +arg0); } @Override public void afterClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After clicked'+arg0); } @Override public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('After Find By'+arg1); } @Override public void afterNavigateBack(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Navigate Back'); } @Override public void afterNavigateForward(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('After Navigate Forward'); } @Override public void afterNavigateRefresh(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('On Navigating Refresh'); } @Override public void afterNavigateTo(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('On Navigating To'+arg0); } @Override public void afterScript(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After Script'); } @Override public void beforeAlertAccept(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Alert Accept'); } @Override public void beforeAlertDismiss(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Alert Dismiss'); } @Override public void beforeChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('Before Change Value of'+arg0); } @Override public void beforeClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Click on'+arg0); } @Override public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('Before Find By'+arg0); } @Override public void beforeNavigateBack(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Back'); } @Override public void beforeNavigateForward(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Forward'); } @Override public void beforeNavigateRefresh(WebDriver arg0) { // TODO Auto-generated method stub System.out.println('Before Navigate Refresh'); } @Override public void beforeNavigateTo(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Navigate To'+arg0); } @Override public void beforeScript(String arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Script'); } @Override public void onException(Throwable arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('On Exception'+arg0); } }
चरण 2: वर्ग श्रोता-पाठ बनाएँ और सुनिश्चित करें कि यह कक्षा के अंदर मुख्य विधि है। इसे WebDriverListeners वर्ग का विस्तार करने दें ताकि श्रोता वर्ग कुछ घटनाओं के लिए निर्धारित ब्राउज़र कमांड पर एक ऑपरेशन कर सके।
कृपया नीचे दिए गए कोड को Hearers_Tests वर्ग में कॉपी-पेस्ट करें। नीचे दिए गए कोड को जावा एप्लिकेशन की तरह चलाएं।
नमूना कोड -2
एक मॉडेम कैसा दिखता है
package Listeners; import java.util.Arrays; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Proxy; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.events.EventFiringWebDriver; public class Listeners_Tests extends WebDriverListeners{ static WebElement e; static ChromeDriver driver; public static void main(String() args) throws InterruptedException { // TODO Auto-generated method stub System.setProperty('webdriver.chrome.driver', 'E:\chromedriver.exe'); /*Setting the capabilities of Chrome Driver*/ try { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); Proxy proxy = new Proxy(); String proxyServer = String.format('AProxyIDontWantToDisplay', System.getenv('proxy.username'), System.getenv('proxy.password')); proxy.setHttpProxy(proxyServer); capabilities.setCapability('proxy', proxy); ChromeOptions options = new ChromeOptions(); options.addArguments(Arrays.asList ('--no-sandbox','--ignore-certificate-errors','--homepage=about:blank','--no-first-run')); options.addArguments('disable-infobars'); capabilities.setCapability(ChromeOptions.CAPABILITY, options); driver = new ChromeDriver(capabilities); } catch (Exception e) { throw new Error(e); } /*---- Creating the instance of EventFiringWebDriver Class----*/ EventFiringWebDriver eventRecorder = new EventFiringWebDriver(driver); /*---- Creating the instance of parent class 'WebdriverListeners' class----*/ WebDriverListeners eCapture = new WebDriverListeners(); /* The below step registers the listeners for logging purpose*/ eventRecorder.register(eCapture); //Event One System.out.println('This is recording Event-One'); eventRecorder.navigate().to('https://www.google.com'); //Event Two System.out.println('This is recording Event-Two'); eventRecorder.findElement(By.xpath('//a(text()='Sign in')')).click(); //Event Three System.out.println('This is recording Event-Three'); eventRecorder.findElement(By.id('identifierId')).clear(); Thread.sleep(5000); //Event Four System.out.println('This is recording Event-Four'); eventRecorder.findElement(By.id('identifierId')).sendKeys('abc@gmail.com'); Thread.sleep(5000); //Event Five System.out.println('This is recording Event-Five'); eventRecorder.navigate().back(); //Event Six System.out.println('This is recording Event-Six'); eventRecorder.navigate().forward(); //Event Seven System.out.println('This is recording Event-Seven'); eventRecorder.navigate().refresh(); //Event Eight System.out.println('This is recording Event-Eight'); eventRecorder.get('https://www.irctc.co.in/eticketing/loginHome.jsf'); //Event Nine System.out.println('This is recording Event-Nine'); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Ten System.out.println('This is recording Event-Ten'); alert.accept(); } catch (Exception e) { } Thread.sleep(3000); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Eleven System.out.println('This is recording Event-Eleven'); alert.dismiss(); } catch (Exception e) { } //Intentionally giving wrong id so it triggers onException Listener--> Event Twelve System.out.println('This is recording Event-Twelve'); eventRecorder.findElement(By.id('loginbutn')).click(); } }
रन सफलतापूर्वक पूरा होने के बाद, कंसोल में लॉग की गई सामग्री की जाँच करें। हम उपरोक्त कोड में सूचीबद्ध प्रत्येक घटना पर जाएंगे।
कंसोल का # 1 स्निपेट
घटना -1: यह घटना कोNavigateTo और afterNavigateTo से पहले रिकॉर्ड करता है, और उसके अनुसार दो ब्लॉकों में लिखी गई क्रियाओं को करता है।
घटना -2: यह ईवेंट को पहले FFBBy और afterFindBy रिकॉर्ड करता है, और उसके अनुसार दो ब्लॉक में लिखी गई क्रियाओं को करता है। इन दो घटनाओं के बाद की घटना पहले और बाद की घटनाओं को कवर करती है।
घटना -3: यह घटनाओं से पहलेChangeValueOf और afterChangeValue रिकॉर्ड करता है।
घटना -4: यह इवेंट -3 जैसा ही है
घटना -5: यह पहले रिकॉर्ड करेंनवेटबैक और आफ्टरनैवबैकबैक इवेंट।
घटना -6: यह पहले और फिर के बाद की घटनाओं को दर्ज करता है।
घटना -7: यह पहले NNigateRefresh और AfterNavigateRefresh ईवेंट रिकॉर्ड करता है।
घटना -8: यह इवेंट -1 जैसा ही है
घटना -9: यह इवेंट -2 जैसा ही है
कंसोल का # 2 स्निपेट
घटना -10: यह पहले की घटनाओं को रिकॉर्ड करता है जैसे किAlertAccept और afterAlertAccept।
घटना -11: यह पहले की घटनाओं को रिकॉर्ड करता है जैसे किAlertDismiss और afterAlertDismiss।
घटना -12: यह onException जैसी घटनाओं को रिकॉर्ड करता है, और संदेश को फेंकता है।
मुझे आशा है कि श्रोताओं का संक्षिप्त विवरण आपको इस बारे में एक विचार देगा कि वेबड्राइवर श्रोता कैसे काम करते हैं। जैसा कि हमने पहले कहा है कि WebDriverEventListener की मदद से, हमें इस इंटरफ़ेस के साथ उपलब्ध सभी विधियों को लागू करना चाहिए।
हालांकि, क्लास एब्सट्रैबड्राइवरएवेंटलीस्टनर की मदद से, हम चुन सकते हैं कि हम किन घटनाओं को लागू करना चाहते हैं।
# 2) AbstractWebDriverEventListener वर्ग
'AbstractWebDriverEventListener' वर्ग का उपयोग करके श्रोताओं को लागू करने के लिए कदम:
चरण 1
एक वर्ग बनाएँ एब्सट्रैबड्राइवर लिस्टनर 'और इसे कक्षा का विस्तार करने दें' एब्सट्रैबड्राइवरईवेंटिस्टनर '
जैसा कि आप देख सकते हैं, इसके विपरीत ' WebDriverEventListener ', यह वर्ग जब विस्तारित विधियों को जोड़ने के लिए एक त्रुटि नहीं बढ़ाता है। आप अपनी परियोजना में जो भी तरीके लागू करना चाहते हैं, उसका चयन कर सकते हैं।
नीचे दिए गए कोड को कॉपी और पेस्ट करें:
नमूना कोड -3
package Listeners; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.events.AbstractWebDriverEventListener; public class AbstractWebDriverListeners extends AbstractWebDriverEventListener{ public void afterChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('After value change of' +arg0); } public void afterClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('After clicked'+arg0); } public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('After Find By'+arg1); } public void beforeChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence() arg2) { // TODO Auto-generated method stub System.out.println('Before Change Value of'+arg0); } public void beforeClickOn(WebElement arg0, WebDriver arg1) { // TODO Auto-generated method stub System.out.println('Before Click on'+arg0); } public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) { // TODO Auto-generated method stub System.out.println('Before Find By'+arg0); } }
चरण 2
नाम के साथ एक नई कक्षा बनाएँ AbstractListeners_Test 'और इसके अंदर,' का उदाहरण बनाएं एब्सट्रैबड्राइवर लिस्ट्रेन ' कक्षा।
इस वर्ग के अंदर नीचे दिए गए कोड को कॉपी-पेस्ट करें।
नमूना कोड -4
package Listeners; import java.util.Arrays; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Proxy; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.events.EventFiringWebDriver; public class AbstractListeners_Tests extends WebDriverListeners{ static WebElement e; static ChromeDriver driver; public static void main(String() args) throws InterruptedException { // TODO Auto-generated method stub System.setProperty('webdriver.chrome.driver', 'E:\chromedriver.exe'); /*Setting the capabilities of Chrome Driver*/ try { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); Proxy proxy = new Proxy(); String proxyServer = String.format('AProxyIDontWantToDisplay', System.getenv('proxy.username'), System.getenv('proxy.password')); proxy.setHttpProxy(proxyServer); capabilities.setCapability('proxy', proxy); ChromeOptions options = new ChromeOptions(); options.addArguments(Arrays.asList ('--no-sandbox','--ignore-certificate-errors','--homepage=about:blank','--no-first-run')); options.addArguments('disable-infobars'); capabilities.setCapability(ChromeOptions.CAPABILITY, options); driver = new ChromeDriver(capabilities); } catch (Exception e) { throw new Error(e); } /*---- Creating the instance of EventFiringWebDriver Class----*/ EventFiringWebDriver eventRecorder = new EventFiringWebDriver(driver); /*---- Creating the instance of parent class 'AbstractWebdriverListeners' class----*/ AbstractWebDriverListeners eCapture = new AbstractWebDriverListeners(); /* The below step registers the listeners for logging purpose*/ eventRecorder.register(eCapture); //Event One System.out.println('This is recording Event-One'); eventRecorder.navigate().to('https://www.google.com'); //Event Two System.out.println('This is recording Event-Two'); eventRecorder.findElement(By.xpath('//a(text()='Sign in')')).click(); //Event Three System.out.println('This is recording Event-Three'); eventRecorder.findElement(By.id('identifierId')).clear(); Thread.sleep(5000); //Event Four System.out.println('This is recording Event-Four'); eventRecorder.findElement(By.id('identifierId')).sendKeys('abc@gmail.com'); Thread.sleep(5000); //Event Five System.out.println('This is recording Event-Five'); eventRecorder.navigate().back(); //Event Six System.out.println('This is recording Event-Six'); eventRecorder.navigate().forward(); //Event Seven System.out.println('This is recording Event-Seven'); eventRecorder.navigate().refresh(); //Event Eight System.out.println('This is recording Event-Eight'); eventRecorder.get('https://www.irctc.co.in/eticketing/loginHome.jsf'); //Event Nine System.out.println('This is recording Event-Nine'); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Ten System.out.println('This is recording Event-Ten'); alert.accept(); } catch (Exception e) { } Thread.sleep(3000); eventRecorder.findElement(By.id('loginbutton')).click(); try { Alert alert = eventRecorder.switchTo().alert(); // check if alert exists // TODO find better way alert.getText(); //Event Eleven System.out.println('This is recording Event-Eleven'); alert.dismiss(); } catch (Exception e) { } //Intentionally giving wrong id so it triggers onException Listener--> Event Twelve System.out.println('This is recording Event-Twelve'); eventRecorder.findElement(By.id('loginbutn')).click(); } }
इस वर्ग में भी पहले दर्ज की गई घटनाएँ हैं, लेकिन चूंकि हमने अपने श्रोता वर्ग को सिर्फ छह घटनाओं को लागू करने के लिए सीमित किया है, इसलिए यह दूसरों को छोड़ देगा और केवल उन लोगों के लिए लॉग प्रदर्शित करेगा।
कंसोल विंडो दृश्य
जैसा कि आप उपरोक्त छवि में पीले चिह्नित क्षेत्रों को देख सकते हैं, केवल उन विधियों को लागू किया गया है जो अंदर हैं एब्सट्रैबड्राइवर लिस्ट्रेन क्लास को ट्रिगर किया गया है।
निष्कर्ष
वेबड्राइवर श्रोता एक ब्राउज़र इवेंट को सुनने और उसके अनुसार प्रतिक्रिया करने वाले इंटरफेस हैं। यदि आप इसे WebDriverEventListener की सहायता से कार्यान्वित करते हैं, तो आपको इस इंटरफ़ेस से जुड़े सभी तरीकों को लागू करना होगा
यदि आप AbstractWebDriverEventListener वर्ग की मदद से वेबड्राइवर श्रोता को लागू करते हैं, तो आप उन तरीकों को चुन सकते हैं जिन्हें आप लागू करना चाहते हैं।
=> स्क्रैच से सेलेनियम जानने के लिए यहां जाएं।
अनुशंसित पाठ
- ककड़ी सेलेनियम ट्यूटोरियल: ककड़ी जावा सेलेनियम वेबड्राइवर एकीकरण
- सेलेनियम वेबड्राइवर का परिचय - सेलेनियम ट्यूटोरियल # 8
- क्रोमड्राइव सेलेनियम ट्यूटोरियल: क्रोम पर सेलेनियम वेबड्राइवर टेस्ट
- हमारी पहली वेबड्राइवर स्क्रिप्ट का कार्यान्वयन - सेलेनियम वेबड्राइवर ट्यूटोरियल # 10
- 30+ सर्वश्रेष्ठ सेलेनियम ट्यूटोरियल: वास्तविक उदाहरणों के साथ सेलेनियम जानें
- सेलेनियम पूछे जाने वाले प्रश्न
- सेलेनियम वेबड्राइवर में अलर्ट / पॉपअप कैसे हैंडल करें - सेलेनियम ट्यूटोरियल # 16
- सेलेनियम वेबड्राइवर में निहित और स्पष्ट प्रतीक्षा (सेलेनियम के प्रकार)