2012-07-06 29 views
9

मैं सेलेनियम वेबड्राइवर का उपयोग कर रहा हूं। प्रत्येक लिंक एक नई ब्राउज़र विंडो में खोला गया है। यह मेरे लिए सुविधाजनक नहीं है। मैं इसे कैसे बदल सकता हूं ताकि यह केवल नए टैब में खुलता है?सेलेनियम वेबड्राइवर: एक नई विंडो के बजाय नया टैब खोलें

+0

आप किस प्रोग्रामिंग भाषा का उपयोग कर रहे हैं? –

उत्तर

5

सेलेनियम में फिलहाल टैब स्विच करने की कोई क्षमता नहीं है। इस वजह से हम ब्राउज़र को नई विंडो में लिंक खोलने के लिए मजबूर करते हैं, लेकिन चूंकि हम विंडोज़ स्विच करने में सक्षम हैं, इसलिए हम ब्राउज़र को दृष्टिकोण लेने के लिए मजबूर करते हैं। यह बाद के संस्करण में

+0

स्पष्ट, धन्यवाद – khris

10

सेलेनियम में अब टैब पर स्विच करने की क्षमता हो सकती है। नीचे कोड 1: फ़ायरफ़ॉक्स के लिए काम करेगा, कोड 2: रोबोट क्लास का उपयोग करके आईई और क्रोम के लिए हम कर सकते हैं और नियंत्रण स्वचालित टैब पर स्वचालित रूप से नहीं चलता है, इसलिए हमें विंडो हैंडल विधि का उपयोग करके वर्तमान टैब पर स्विच करने की आवश्यकता है। नीचे दिया गया कोड अच्छी तरह से काम करेगा जब हम व्यक्तिगत स्क्रिप्ट चला रहे हैं लेकिन सूट के रूप में चलते समय आपको कुंजी बोर्ड घटनाओं में दर्द महसूस हो सकता है। इससे बचने के लिए हमें सेलेनियम-जावा में जावास्क्रिप्ट निष्पादक का उपयोग करके उपयोगकर्ता परिभाषित जावास्क्रिप्ट विधि का उपयोग कर अन्य संभावनाओं के साथ जाना होगा।

हम खिड़कियों और टैब के बीच स्विच कर सकते हैं जो प्रत्येक विंडो के लिए आवंटित नाम की पहचान करके और नाम अल्फान्यूमेरिक कैरेक्टर में होगा।

***Code 1*** 
    //First tab(default tab) 
    driver.navigate().to("http://www.google.com"); 
    driver.manage().window().maximize(); 

    //second tab 
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 
    driver.navigate().to("https://yahoo.com"); 

    //third tab 
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 
    driver.navigate().to("http://www.google.com"); 

    //move to very first tab. 
    driver.findElement(By.cssSelector("body")) 
      .sendKeys(Keys.CONTROL + "\t"); 

    // To close the current tab.  
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "w"); 
    **code 2** 
    driver.navigate().to("http://www.google.com"); 
    driver.manage().window().maximize(); 


    Robot robot = new Robot(); 
    robot.keyPress(KeyEvent.VK_CONTROL); 
    robot.keyPress(KeyEvent.VK_T); 

    Set<String> handles = driver.getWindowHandles(); 
    List<String> handlesList = new ArrayList<String>(handles); 
    String newTab = handlesList.get(handlesList.size() - 1); 

    // switch to new tab 
    driver.switchTo().window(newTab); 
    driver.get("http://www.yahoo.com");