Trova l'elemento del corpo sulla pagina e poi attiva una chiave di accordo per il browser che desideri. Nell'esempio seguente ho cercato di astrarre i browser per un'enumerazione che delinea il comportamento per newTab, newWindow e newIncognitoWindow. Ho creato contenuti FF, IE, Chrome, Safari e Opera; tuttavia, potrebbero non essere pienamente implementati a causa della mia mancanza di conoscenza.
/**
* Enumeration quantifying some common keystrokes for Browser Interactions.
*
* @see "http://stackoverflow.com/questions/33224070/how-to-open-incognito-private-window-through-selenium-java"
* @author http://stackoverflow.com/users/5407189/jeremiah
* @since Oct 19, 2015
*
*/
public static enum KeystrokeSupport {
CHROME,
FIREFOX {
@Override
protected CharSequence getNewIncognitoWindowCommand() {
return Keys.chord(Keys.CONTROL, Keys.SHIFT, "p");
}
},
IE {
@Override
protected CharSequence getNewIncognitoWindowCommand() {
return Keys.chord(Keys.CONTROL, Keys.SHIFT, "p");
}
},
SAFARI {
@Override
protected CharSequence getNewTabCommand() {
throw new UnsupportedOperationException("Author does not know this keystroke");
}
@Override
protected CharSequence getNewWindowCommand() {
throw new UnsupportedOperationException("Author does not know this keystroke");
}
@Override
protected CharSequence getNewIncognitoWindowCommand() {
throw new UnsupportedOperationException("Author does not know this keystroke");
}
},
OPERA {
@Override
protected CharSequence getNewIncognitoWindowCommand() {
throw new UnsupportedOperationException("Author does not know this keystroke");
}
};
public final void newTab(WebDriver driver) {
WebElement target = getKeystrokeTarget(driver);
target.sendKeys(getNewTabCommand());
}
public final void newWindow(WebDriver driver) {
WebElement target = getKeystrokeTarget(driver);
target.sendKeys(getNewWindowCommand());
}
public final void newIncognitoWindow(WebDriver driver) {
WebElement target = getKeystrokeTarget(driver);
target.sendKeys(getNewIncognitoWindowCommand());
}
protected CharSequence getNewTabCommand() {
return Keys.chord(Keys.CONTROL, "t");
}
protected CharSequence getNewWindowCommand() {
return Keys.chord(Keys.CONTROL, "n");
}
protected CharSequence getNewIncognitoWindowCommand() {
return Keys.chord(Keys.CONTROL, Keys.SHIFT, "t");
}
protected final WebElement getKeystrokeTarget(WebDriver driver) {
WebDriverWait wait = new WebDriverWait(driver, 10);
return wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("body")));
}
}
Con questo allora, possiamo offrire un test con parametri che verrà eseguito attraverso ciascuna delle configurazioni ed eseguire i comportamenti per verifica visiva. Potresti voler aggiungere qualunque cosa tu voglia testare.
package stackoverflow.proof.selenium;
import java.util.Collection;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import com.google.common.base.Supplier;
import com.google.common.collect.Lists;
/**
* Test to try out some various browser keystrokes and try to get the environment to do what we want.
*
* @see "http://stackoverflow.com/questions/33224070/how-to-open-incognito-private-window-through-selenium-java"
* @author http://stackoverflow.com/users/5407189/jeremiah
* @since Oct 19, 2015
*
*/
@RunWith(Parameterized.class)
public class KeyStrokeTests {
@Parameters(name="{0}")
public static Collection<Object[]> buildTestParams() {
Collection<Object[]> params = Lists.newArrayList();
Supplier<WebDriver> ffS = new Supplier<WebDriver>() {
public WebDriver get() {
return new FirefoxDriver();
}
};
params.add(new Object[]{KeystrokeSupport.FIREFOX, ffS});
/* I'm not currently using these browsers, but this should work with minimal effort.
Supplier<WebDriver> chrome = new Supplier<WebDriver>() {
public WebDriver get() {
return new ChromeDriver();
}
};
Supplier<WebDriver> ie = new Supplier<WebDriver>() {
public WebDriver get() {
return new InternetExplorerDriver();
}
};
Supplier<WebDriver> safari = new Supplier<WebDriver>() {
public WebDriver get() {
return new SafariDriver();
}
};
Supplier<WebDriver> opera = new Supplier<WebDriver>() {
public WebDriver get() {
return new OperaDriver();
}
};
params.add(new Object[]{KeystrokeSupport.CHROME, chrome});
params.add(new Object[]{KeystrokeSupport.IE, ie});
params.add(new Object[]{KeystrokeSupport.SAFARI, safari});
params.add(new Object[]{KeystrokeSupport.OPERA, opera});
*/
return params;
}
Supplier<WebDriver> supplier;
WebDriver driver;
KeystrokeSupport support;
public KeyStrokeTests(KeystrokeSupport support,Supplier<WebDriver> supplier) {
this.supplier = supplier;
this.support = support;
}
@Before
public void setup() {
driver = supplier.get();
driver.get("http://google.com");
}
@Test
public void testNewTab() {
support.newTab(driver);
}
@Test
public void testNewIncognitoWindow() {
support.newIncognitoWindow(driver);
}
@Test
public void testNewWindow() {
support.newWindow(driver);
}
@After
public void lookAtMe() throws Exception{
Thread.sleep(5000);
for (String handle : driver.getWindowHandles()) {
driver.switchTo().window(handle);
driver.close();
}
}
}
Meglio di fortuna.
google sa ... hai chiesto? – JeffC
Possibile duplicato di [Esegui browser chrome in inconginto Mode in Selenium] (http://stackoverflow.com/questions/19026295/run-chrome-browser-in-inconginto-mode-in-selenium) – JeffC
@JeffC Ho chiesto a Google , e mi ha portato qui - sfacciato bastardo: p – hd1