दिलचस्प पोस्ट
मैं एंड्रॉइड पर ओरिएंटेशन परिवर्तन कैसे अक्षम करूं? आंतरिक टेक्स्ट बनाम इनरियल एचटीएमएल बनाम लेबल बनाम टेक्स्ट बनाम टेक्स्ट कॉन्टैक्ट vs बाहरी टेक्स्ट मैं Django में एक स्लग कैसे बनाऊं? जेनकिंस में कलाकृतियों को संग्रहित करें का उपयोग करते समय C ++ नक्शा प्रकार तर्क को रिक्त निर्माता की आवश्यकता क्यों है? स्ट्रिंग आउटपुट: सी # में प्रारूप या कॉन्सैट? कॉलम में पंक्तियों को एक सेल में एक्सेल में कैसे मर्ज करना है? Google मैप्स: कस्टम इन्फॉन्डव कैसे बनाएं? लंबे समय तक चौड़े स्वरूप से काम नहीं करना मैं गैर-रूट उपयोगकर्ता के रूप में सीपीएएन का उपयोग कैसे कर सकता हूं? जावा स्थिर प्रारंभिक धागे सुरक्षित हैं? जार में वर्ग फ़ाइल को अद्यतन करना एक प्रक्रिया की सीपीयू और मेमोरी उपयोग पाने के लिए सही प्रदर्शन काउंटर क्या है? जब कोई संपत्ति का मूल्य बदल जाता है तो कोई घटना बढ़ाएं? स्ट्रिंग से एचटीएमएल टैग को हटाने के लिए नियमित अभिव्यक्ति

जावा के साथ सेलेनियम वेबड्रायवर का उपयोग कर एक नया टैब कैसे खोल सकता है?

सेलेनियम वेबड्राइवर (उर्फ सेलेनियम 2) का उपयोग करते हुए मौजूदा फ़ायरफ़ॉक्स ब्राउज़र में एक नया टैब कैसे खोल सकता है?

वेब के समाधान से एकत्रित समाधान "जावा के साथ सेलेनियम वेबड्रायवर का उपयोग कर एक नया टैब कैसे खोल सकता है?"

नीचे दिए गए कोड नए टैब में लिंक खोलेंगे।

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN); driver.findElement(By.linkText("urlLink")).sendKeys(selectLinkOpeninNewTab); 

नीचे दिए गए कोड खाली नया टैब खोलेंगे

 String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,"t"); driver.findElement(By.linkText("urlLink")).sendKeys(selectLinkOpeninNewTab); 

बस रूबी / पायथन / सी # बाइंडिंग (सेलेनियम 2.33.0) में किसी भी अन्य व्यक्ति के उत्तर के लिए देख रहे हैं।

नोट करें कि भेजने के लिए वास्तविक कुंजी आपके ओएस पर निर्भर करती है, उदाहरण के लिए, मैक CONTROL + t बजाय COMMAND + t का उपयोग करता है

माणिक

 require 'selenium-webdriver' driver = Selenium::WebDriver.for :firefox driver.get('http://stackoverflow.com/') body = driver.find_element(:tag_name => 'body') body.send_keys(:control, 't') driver.quit 

अजगर

 from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("http://stackoverflow.com/") body = driver.find_element_by_tag_name("body") body.send_keys(Keys.CONTROL + 't') driver.close() 

सी#

 using OpenQA.Selenium; using OpenQA.Selenium.Firefox; namespace StackOverflowTests { class OpenNewTab { static void Main(string[] args) { IWebDriver driver = new FirefoxDriver(); driver.Navigate().GoToUrl("http://stackoverflow.com/"); IWebElement body = driver.FindElement(By.TagName("body")); body.SendKeys(Keys.Control + 't'); driver.Quit(); } } } 

ऐसा क्यों नहीं करते

 driver.ExecuteScript("window.open('your url','_blank');"); 

फ़ायरफ़ॉक्स ब्राउज़र के लिए इसे आज़माएं

 /* Open new tab in browser */ public void openNewTab() { driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t"); ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles()); driver.switchTo().window(tabs.get(0)); } 

नीचे कोड नई विंडो में लिंक खोल देगा

 String selectAll = Keys.chord(Keys.SHIFT,Keys.RETURN); driver.findElement(By.linkText("linkname")).sendKeys(selectAll); 

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

 driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t"); string newTabInstance = driver.WindowHandles[driver.WindowHandles.Count-1].ToString(); driver.SwitchTo().Window(newTabInstance); driver.Navigate().GoToUrl(url); 

आप सेलेनियम वेबड्राइवर के साथ जावा का उपयोग कर निम्न कोड का उपयोग कर सकते हैं:

 driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 

मैं जावा में सेलेनियम 2.52.0 और फ़ायरफ़ॉक्स 44.0.2 का उपयोग कर रहा हूं। दुर्भाग्य से ऊपर के समाधानों में से कोई भी मेरे लिए काम नहीं करता है समस्या यह है कि अगर मैं कॉल ड्राइवर। GetWindowHandles () मुझे हमेशा 1 सिंगल हैंडल मिलता है किसी तरह यह मेरे लिए समझ में आता है क्योंकि फ़ायरफ़ॉक्स एक एकल प्रक्रिया है और प्रत्येक टैब अलग प्रक्रिया नहीं है लेकिन शायद मैं गलत हूँ किसी भी तरह मैं अपना खुद का समाधान लिखने की कोशिश करता हूं:

  // open a new tab driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); //url to open in a new tab String urlToOpen = "https://url_to_open_in_a_new_tab"; Iterator<String> windowIterator = driver.getWindowHandles() .iterator(); //I always get handlesSize == 1, regardless how many tabs I have int handlesSize = driver.getWindowHandles().size(); //I had to grab the original handle String originalHandle = driver.getWindowHandle(); driver.navigate().to(urlToOpen); Actions action = new Actions(driver); // close the newly opened tab action.keyDown(Keys.CONTROL).sendKeys("w").perform(); // switch back to original action.keyDown(Keys.CONTROL).sendKeys("1").perform(); //and switch back to the original handle. I am not sure why, but //it just did not work without this, like it has lost the focus driver.switchTo().window(originalHandle); 

मैंने एक नया टैब खोलने के लिए Ctrl + t संयोजन का उपयोग किया, इसे बंद करने के लिए Ctrl + w, और मूल टैब पर वापस स्विच करने के लिए मैंने Ctrl + 1 (प्रथम टैब) का उपयोग किया। मुझे पता है कि मेरा समाधान सही या अच्छा नहीं है और मैं भी चालक की स्विचओ कॉल के साथ स्विच करना चाहूंगा, लेकिन जैसा कि मैंने लिखा था कि यह संभव नहीं था क्योंकि मेरे पास केवल एक संभाल था। शायद यह उसी स्थिति के साथ किसी के लिए उपयोगी होगा।

मुझे थोड़ी देर के लिए क्रोम में एक नया टैब खोलने में परेशानी थी यहां तक ​​कि driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); मेरे लिए काम नहीं किया

मुझे पता चला कि यह पर्याप्त नहीं है कि सेलेनियम के चालक पर ध्यान केंद्रित किया गया है, विंडोज़ को सामने में खिड़की भी होनी चाहिए।

मेरा समाधान क्रोम पर एक चेतावनी का आह्वान करना था जो विंडो को सामने लाएगा और फिर कमांड को निष्पादित करेगा। नमूना कोड:

 ((JavascriptExecutor)driver).executeScript("alert('Test')"); driver.switchTo().alert().accept(); driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 

नोडजे के लिए एक ही उदाहरण:

 var webdriver = require('selenium-webdriver'); ... driver = new webdriver.Builder(). withCapabilities(capabilities). build(); ... driver.findElement(webdriver.By.tagName("body")).sendKeys(webdriver.Key.COMMAND + "t"); 

एक नए, लेकिन अधिक महत्वपूर्ण बात कैसे खोलें, आप उस नए टैब में सामान कैसे करते हैं? वेबड्राइवर प्रत्येक टैब के लिए एक नया विंडोहाण्डल नहीं जोड़ता है, और केवल पहली टैब का नियंत्रण है इसलिए, एक नया टैब (नियंत्रण + टैब नंबर) सेट चुनने के बाद, दृश्य टैब को परिभाषित करने के लिए ड्रायवर पर डिफॉल्ट कंटेंट () जिसे आप कार्य करने जा रहे हैं।

मूल दृश्य

 Dim driver = New WebDriver("Firefox", BaseUrl) ' Open new tab - send Control T Dim body As IWebElement = driver.FindElement(By.TagName("body")) body.SendKeys(Keys.Control + "t") ' Go to a URL in that tab driver.GoToUrl("YourURL") ' Assuming you have m tabs open, go to tab n by sending Control + n body.SendKeys(Keys.Control + n.ToString()) ' Now set the visible tab as the drivers default content. driver.SwitchTo().DefaultContent() 

सेलेनियम वेब ड्रिवर का उपयोग करते हुए मौजूदा फ़ायरफ़ॉक्स ब्राउज़र में एक नया टैब खोलने के लिए

 FirefoxDriver driver = new FirefoxDriver(); driver.findElement(By.tagName("body")).sendKeys(Keys.CONTROL,"t"); 
  Actions at=new Actions(wd); at.moveToElement(we); at.contextClick(we).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform(); 
 //to open new tab in existing window driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t"); 

क्रोम के लिए जावा के साथ सेलेनियम वेबड्रायवर का उपयोग करके एक नया टैब कैसे खोल सकता है?

 ChromeOptions options = new ChromeOptions(); options.addArguments("--disable-extensions"); driver = new ChromeDriver(options); driver.manage().window().maximize(); driver.navigate().to("https://google.com"); Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_T); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyRelease(KeyEvent.VK_T); 

उपरोक्त कोड पहले एक्सटेंशन को अक्षम कर देगा और रोबोट क्लास का नया टैब खुल जाएगा।

 driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t"); ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles()); driver.switchTo().window(tabs.get(0)); 

कई टैब खोलने और टैब के बीच स्विच करने के लिए और अंत में सभी टैब बंद करने के तरीके को समझने के लिए यह पूर्ण उदाहरण देखें

 public class Tabs { WebDriver driver; Robot rb; @BeforeTest public void setup() throws Exception { System.setProperty("webdriver.chrome.driver", "C:\\Users\\Anuja.AnujaPC\\Downloads\\chromedriver_win32\\chromedriver.exe"); WebDriver driver=new ChromeDriver(); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); driver.get("http://qaautomated.com"); } @Test public void openTab() { //Open tab 2 using CTRL + t keys. driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t"); //Open URL In 2nd tab. driver.get("http://www.qaautomated.com/p/contact.html"); //Call switchToTab() method to switch to 1st tab switchToTab(); //Call switchToTab() method to switch to 2nd tab. switchToTab(); } public void switchToTab() { //Switching between tabs using CTRL + tab keys. driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t"); //Switch to current selected tab's content. driver.switchTo().defaultContent(); } @AfterTest public void closeTabs() throws AWTException { //Used Robot class to perform ALT + SPACE + 'c' keypress event. rb =new Robot(); rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); } } 

यह उदाहरण इस वेब पेज द्वारा दिया गया है

क्रोम चालक में नई विंडो खोलने के लिए

 //The script that will will open a new blank window //If you want to open a link new tab, replace 'about:blank' with a link String a = "window.open('about:blank','_blank');"; ((JavascriptExecutor)driver).executeScript(a); 

टैब के बीच स्विच करने के लिए, यहां पढ़ें

https://bugs.chromium.org/p/chromedriver/issues/detail?id=1465 में बग के कारण webdriver.switch वास्तव में टैब स्विच करता है, फोकस पहले टैब पर छोड़ दिया जाता है आप इसे स्विच कर सकते हैं driver.get switchwindow के बाद और यह देखते हुए कि दूसरा टैब वास्तव में नए यूआरएल पर जाते हैं और मूल टैब नहीं है।

अब के लिए आसपास काम है @ @ yardening2 का सुझाव दिया है। एक चेतावनी खोलने के लिए जेएस का उपयोग करें और फिर इसे स्वीकार करने के लिए वेबड्राइवर का उपयोग करें।

सेलेनियम वेबड्रिवर का उपयोग करके ब्राउज़र विंडो को संभालना:

 String winHandleBefore = driver.getWindowHandle(); for(String winHandle : driver.getWindowHandles()) // Switch to new opened window { driver.switchTo().window(winHandle); } driver.switchTo().window(winHandleBefore); // move to previously opened window 
 driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");// open in new tab driver.get("ur link");