5
System.setProperty("webdriver.chrome.driver", "D:\\softwares\\chromedriver_win32\\chromedriver.exe"); 

WebDriver driver = new ChromeDriver(); 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
driver.manage().window().maximize(); 
driver.get("https://mail.google.com/"); 
String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN); 
driver.findElement(By.linkText("www.facebook.com")).sendKeys(selectLinkOpeninNewTab); 

nuova scheda si sta aprendo, ma link URL non si aprecome aprire un link in una nuova scheda (chrome) usando il selenio web?

risposta

6

Ho controllato con il codice seguente e funziona perfettamente per me. Ho trovato risposta da here.

driver = new ChromeDriver(); 
    driver.manage().window().maximize(); 

    baseUrl = "http://www.google.co.uk/"; 
    driver.get(baseUrl); 
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t"); 

    ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles()); 
    driver.switchTo().window(tabs.get(1)); //switches to new tab 
    driver.get("https://www.facebook.com"); 

    driver.switchTo().window(tabs.get(0)); // switch back to main screen   
    driver.get("https://www.news.google.com"); 
+0

Sta funzionando bene ma si apre un'altra finestra del browser – nlogn

+0

Funziona per me in una nuova scheda. Puoi confermare se questo ('driver.findElement (By.cssSelector (" body ")). SendKeys (Keys.CONTROL +" t "); ') comando apre una nuova finestra o una nuova scheda? –

+1

funziona bene ora! – nlogn

1

Primo aperta nuova scheda vuota utilizzando i tasti Ctrl + t e quindi utilizzare .get() per andare a prendere l'URL che si desidera. Il codice dovrebbe essere simile a questa -

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

driver.get("www.facebook.com"); 

Se si desidera aprire un link sulla vista corrente in una nuova scheda, allora il codice che hai scritto sopra può essere utilizzato. Invece di By.linkText() assicurati di utilizzare la classe di selettore By appropriata per selezionare l'elemento web.

9

questo sotto codice funziona per me in selenio 3 e Chrome versione 58.

WebDriver driver = new ChromeDriver(); 
    driver.get("http://yahoo.com"); 
    ((JavascriptExecutor)driver).executeScript("window.open()"); 
    ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles()); 
    driver.switchTo().window(tabs.get(1)); 
    driver.get("http://google.com"); 
+0

Questa è la soluzione migliore in quanto Ctrl + t è sempre interrotto nel browser chrome, https: // github.com/SeleniumHQ/selenio/problemi/5462 – vikramvi

+0

Super funziona come previsto ctrl + t è rotto in chome ma un problema in cromo "org.openqa.selenium.WebDriverException: disconnected: impossibile connettersi al renderer" può essere gestito con blocco catch Grazie per la risposta –

-1

È possibile aprire il browser multipla o una finestra utilizzando il codice qui sotto:

WebDriver driver = new ChromeDriver(); 
driver.get("http://yahoo.com"); 

WebDriver driver1 = new ChromeDriver(); 
driver1.get("google.com"); 

WebDriver driver2 = new InternetExplorerDriver(); 
driver2.get("google.com/gmap"); 
0

selenio può solo automatizzare su WebElements del browser. L'apertura di una nuova scheda è un'operazione eseguita sul webBrowser che è un'applicazione indipendente. Per fare ciò possiamo utilizzare la classe Robot dal pacchetto java.util. * Che può eseguire operazioni usando la tastiera e il mouse indipendentemente dal tipo di applicazione. Quindi ecco il codice per la vostra operazione. Si noti che non è possibile automatizzare applicazioni stand alone utilizzando la classe Robot, ma è possibile eseguire operazioni tastiera o mouse

System.setProperty("webdriver.chrome.driver","softwares\\chromedriver_win32\\chromedriver.exe"); 
WebDriver driver = new ChromeDriver(); 
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS); 
driver.manage().window().maximize(); 
driver.get("http://www.google.com"); 
Robot rob = new Robot(); 
rob.keyPress(keyEvent.VK_CONTROL); 
rob.keyPress(keyEvent.VK_T); 
rob.keyRelease(keyEvent.VK_CONTROL); 
rob.keyRelease(keyEvent.VK_T); 

Dopo questo passo è necessario un iteratore finestra per passare alla nuova scheda:

Set <String> ids = driver.getWindowHandles(); 
Iterator <String> it = ids.iterator(); 
String currentWindow = it.next(); 
String newWindow = it.next(); 
driver.switchTo().window(newWindow); 
driver.findElement(By.linkText("www.facebook.com")).sendKeys(selectLinkOpeninNewTab); 
1

avevo usato il codice qui sotto per aprire una nuova scheda nel browser utilizzando C# selenio ..

IJavaScriptExecutor js = driver (IJavaScriptExecutor);

js.ExecuteScript ("window.open();");

Problemi correlati