下面列出了org.testng.annotations.BeforeTest#org.openqa.selenium.remote.DesiredCapabilities 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* initialization.
*/
@BeforeClass public static void beforeClass() {
service = AppiumDriverLocalService.buildDefaultService();
service.start();
if (service == null || !service.isRunning()) {
throw new AppiumServerHasNotBeenStartedLocallyException(
"An appium server node is not started!");
}
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.ESPRESSO);
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
capabilities.setCapability(MobileCapabilityType.APP, apiDemosApk().toAbsolutePath().toString());
capabilities.setCapability("eventTimings", true);
driver = new AndroidDriver<>(service.getUrl(), capabilities);
}
@Before
public void setUp() throws Exception {
// set up appium
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "Selendroid");
capabilities.setCapability(CapabilityType.VERSION, "4.2.2");
capabilities.setCapability("device", "Android");
capabilities.setCapability(CapabilityType.PLATFORM, "Mac");
capabilities.setCapability("app", "https://s3.amazonaws.com/voodoo2/SugarCRM.apk.zip");
capabilities.setCapability("app-package", "com.sugarcrm.nomad");
capabilities.setCapability("app-activity", "NomadActivity");
driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
values = new ArrayList<>();
}
@BeforeTest
@Override
public void Setup() throws Exception {
super.Setup();
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("sessionName", "Android Web Test");
capabilities.setCapability("sessionDescription", "Kobiton sample session");
capabilities.setCapability("deviceOrientation", "portrait");
capabilities.setCapability("captureScreenshots", true);
capabilities.setCapability("browserName", "chrome");
capabilities.setCapability("deviceName", "Galaxy S6");
capabilities.setCapability("platformName", "Android");
driver = new RemoteWebDriver(getAutomationUrl(), capabilities);
}
@BeforeTest
public void setUp() throws Exception {
// Set the desired capabilities for Android Device
DesiredCapabilities caps = DesiredCapabilities.android();
caps.setCapability("deviceOrientation", "portrait");
caps.setCapability("platformVersion", "8.1");
caps.setCapability("platformName", "Android");
caps.setCapability("browserName", "Chrome");
// Create an instance of AndroidDriver for testing on Android platform
// connect to the local Appium server running on a different machine
// We will use WebElement type for testing the Web application
driver = new AndroidDriver<WebElement>(new URL(
"http://192.168.0.101:4723/wd/hub"), caps);
driver.get("http://demo-store.seleniumacademy.com/");
}
@SuppressWarnings("unchecked")
private static DesiredCapabilities testGetFirefoxWebDriver(WebDriverConfiguration configuration) throws Exception
{
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
FirefoxOptions firefoxOptions = new FirefoxOptions();
whenNew(FirefoxOptions.class).withArguments(desiredCapabilities).thenReturn(firefoxOptions);
whenNew(FirefoxOptions.class).withNoArguments().thenReturn(firefoxOptions);
FirefoxDriver expected = mock(FirefoxDriver.class);
whenNew(FirefoxDriver.class).withParameterTypes(FirefoxOptions.class).withArguments(firefoxOptions)
.thenReturn(expected);
WebDriver actual = WebDriverType.FIREFOX.getWebDriver(desiredCapabilities, configuration);
assertEquals(expected, actual);
Map<String, Object> options = (Map<String, Object>) desiredCapabilities
.getCapability(FirefoxOptions.FIREFOX_OPTIONS);
Map<String, Object> prefs = (Map<String, Object>) options.get("prefs");
assertEquals("about:blank", prefs.get("startup.homepage_welcome_url.additional"));
return desiredCapabilities;
}
@BeforeTest
@Override
public void Setup() throws Exception {
super.Setup();
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("sessionName", "iOS App Test");
capabilities.setCapability("sessionDescription", "Kobiton sample session");
capabilities.setCapability("deviceOrientation", "portrait");
capabilities.setCapability("captureScreenshots", true);
capabilities.setCapability("app", "https://s3-ap-southeast-1.amazonaws.com/kobiton-devvn/apps-test/demo/iFixit.ipa");
capabilities.setCapability("deviceName", "iPhone 6s");
capabilities.setCapability("platformName", "iOS");
driver = new IOSDriver<>(getAutomationUrl(), capabilities);
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
}
@Test public void startingIOSAppWithCapabilitiesAndServiceTest() {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, BaseIOSTest.DEVICE_NAME);
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.APPIUM);
capabilities.setCapability(MobileCapabilityType.APP, uiCatalogAppZip().toAbsolutePath().toString());
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, BaseIOSTest.PLATFORM_VERSION);
//sometimes environment has performance problems
capabilities.setCapability(IOSMobileCapabilityType.LAUNCH_TIMEOUT, 500000);
AppiumServiceBuilder builder = new AppiumServiceBuilder()
.withArgument(GeneralServerFlag.SESSION_OVERRIDE)
.withArgument(GeneralServerFlag.STRICT_CAPS);
IOSDriver<?> driver = new IOSDriver<>(builder, capabilities);
try {
Capabilities caps = driver.getCapabilities();
assertTrue(caps.getCapability(MobileCapabilityType.PLATFORM_NAME)
.toString().equalsIgnoreCase(MobilePlatform.IOS));
assertNotNull(null, caps.getCapability(MobileCapabilityType.DEVICE_NAME));
} finally {
driver.quit();
}
}
private static WebDriver setupRemote() {
LOG.i("Setting up Remote driver...");
final RemoteSetting remoteSetting = appSetting().getRemote();
final RemoteSource source = remoteSetting.getSource();
final DesiredCapabilities caps = new DesiredCapabilities();
switch (source) {
case SAUCELABS:
setupCloud(remoteSetting, caps, "sauce");
break;
case BROWSERSTACK:
setupCloud(remoteSetting, caps, "bstack");
break;
case GRID:
default:
setupCloud(remoteSetting, caps, null);
break;
}
return createRemoteSession(remoteSetting, caps);
}
@Before
public void setUp() throws Exception {
// set up appium
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android");
capabilities.setCapability(CapabilityType.VERSION, "4.2.2");
capabilities.setCapability("device", "Android");
capabilities.setCapability(CapabilityType.PLATFORM, "Mac");
capabilities.setCapability("app", "https://s3.amazonaws.com/voodoo2/TestApp.apk.zip");
capabilities.setCapability("app-package", "com.example.TestApp");
capabilities.setCapability("app-activity", "MyActivity");
driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
values = new ArrayList<>();
}
private void setupRemoteDriver(String device, String xmlTestName) throws MalformedURLException {
loadProperties(device);
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("bitbar_apiKey", "<YOUR_BITBAR_API_KEY>");
capabilities.setCapability("bitbar_testrun", this.getClass().getSimpleName());
capabilities.setCapability("bitbar_project", xmlTestName);
capabilities.setCapability("bitbar_device", bitbarDevice);
capabilities.setCapability("browserName", browserName);
capabilities.setCapability("platformName", platformName);
capabilities.setCapability("deviceName", deviceName);
if (automationName != null)
capabilities.setCapability("automationName", automationName);
driver.set(new RemoteWebDriver(new URL("https://appium.bitbar.com/wd/hub/"), capabilities));
}
@Test
public void providesRemoteAccessToWebStorage() {
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability(CapabilityType.SUPPORTS_WEB_STORAGE, true);
CapableDriver driver = mock(CapableDriver.class);
when(driver.getCapabilities()).thenReturn(caps);
WebStorage storage = Utils.getWebStorage(driver);
LocalStorage localStorage = storage.getLocalStorage();
SessionStorage sessionStorage = storage.getSessionStorage();
localStorage.setItem("foo", "bar");
sessionStorage.setItem("bim", "baz");
verify(driver).execute(DriverCommand.SET_LOCAL_STORAGE_ITEM, ImmutableMap.of(
"key", "foo", "value", "bar"));
verify(driver).execute(DriverCommand.SET_SESSION_STORAGE_ITEM, ImmutableMap.of(
"key", "bim", "value", "baz"));
}
@Test
public void testArbitraryADBCommands() throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("automationName", "UiAutomator2");
capabilities.setCapability("appPackage", "com.google.android.apps.photos");
capabilities.setCapability("appActivity", ".home.HomeActivity");
// Open the app.
AndroidDriver driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), capabilities);
try {
List<String> removePicsArgs = Arrays.asList("-rf", ANDROID_PHOTO_PATH + "/*.*");
Map<String, Object> removePicsCmd = ImmutableMap
.of("command", "rm", "args", removePicsArgs);
driver.executeScript("mobile: shell", removePicsCmd);
List<String> lsArgs = Arrays.asList("/mnt/sdcard");
Map<String, Object> lsCmd = ImmutableMap.of("command", "ls", "args", lsArgs);
String lsOutput = (String) driver.executeScript("mobile: shell", lsCmd);
Assert.assertEquals("", lsOutput);
} finally {
driver.quit();
}
}
public static DesiredCapabilities build(RemoteCapability capability){
DesiredCapabilities desiredCapabilities;
if(RemoteCapability.CHROME.equals(capability)){
ChromeOptions options = new ChromeOptions();
desiredCapabilities = DesiredCapabilities.chrome();
desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, options);
return desiredCapabilities;
} else if (RemoteCapability.FIREFOX.equals(capability)){
FirefoxProfile profile = new FirefoxProfile();
desiredCapabilities = DesiredCapabilities.firefox();
desiredCapabilities.setCapability(FirefoxDriver.PROFILE, profile);
return desiredCapabilities;
} else if (RemoteCapability.INTERNET_EXPLORER.equals(capability)){
desiredCapabilities = DesiredCapabilities.internetExplorer();
return desiredCapabilities;
} else if (RemoteCapability.PHANTOMJS.equals(capability)){
desiredCapabilities = DesiredCapabilities.phantomjs();
return desiredCapabilities;
}
throw new IllegalArgumentException("No such capability");
}
@Test
public void testClickLink_iOS_withoutNativeWebTap() throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "iOS");
capabilities.setCapability("platformVersion", "11.4");
capabilities.setCapability("deviceName", "iPhone 8");
capabilities.setCapability("browserName", "Safari");
IOSDriver driver = new IOSDriver<>(new URL("http://localhost:4723/wd/hub"), capabilities);
actualTest(driver);
}
public InternetExplorerFactory() {
super(new Function<DesiredCapabilities, WebDriver>() {
@Override
public WebDriver apply(DesiredCapabilities capabilities) {
return new InternetExplorerDriver(capabilities);
}
});
}
@Override
public Browser createBrowser() {
String browserName = configuration.getRemoteBrowserName();
String browserVersion = configuration.getRemoteBrowserVersion();
DesiredCapabilities capabilities = new DesiredCapabilities(browserName, browserVersion, Platform.ANY);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability(CapabilityType.HAS_NATIVE_EVENTS, false);
capabilities.setCapability("marionette", configuration.getRemoteFirefoxMarionette());
setOptionalProxyConfiguration(capabilities);
return createBrowser(capabilities);
}
@Before
public void setUp() throws IOException {
readGridHostPort();
DesiredCapabilities desiredCapabilities = firefoxWithSikuli();
URL url = new URL(String.format("http://%s:%d/wd/hub", host, port));
RemoteWebDriver remoteWebDriver = new RemoteWebDriver(url, desiredCapabilities);
WebDriverRunner.setWebDriver(remoteWebDriver);
}
public static WebDriver getEdgeDriver()
{
String path = System.getProperty("user.dir") + "\\Drivers\\EdgeWebDriver.exe";
System.setProperty("webdriver.ie.driver", path);
DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
return new InternetExplorerDriver(caps);
}
public DeviceWebDriver( String xmlData, Device currentDevice, DesiredCapabilities dC )
{
this.cachingEnabled = true;
readXML( xmlData );
this.currentDevice = currentDevice;
this.syntheticConnection = true;
this.dC = dC;
}
/**
* 火狐浏览器配置
*/
private void firefox()
{
DesiredCapabilities capability = DesiredCapabilities.firefox();
capability.setCapability("marionette", true);
engineCapMap.put(DRIVER_FIREFOX, capability);
}
@Override
public WebDriver createDriver(DesiredCapabilities capabilities) {
Configuration.browserSize = String.format("%sx%s", loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH),
loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT));
String expectedBrowser = loadSystemPropertyOrDefault(BROWSER, CHROME);
String remoteUrl = loadSystemPropertyOrDefault(REMOTE_URL, LOCAL);
BlackList blackList = new BlackList();
boolean isProxyMode = loadSystemPropertyOrDefault(PROXY, false);
if (isProxyMode) {
enableProxy(capabilities);
}
log.info("remoteUrl=" + remoteUrl + " expectedBrowser= " + expectedBrowser + " BROWSER_VERSION=" + System.getProperty(CapabilityType.BROWSER_VERSION));
switch (expectedBrowser.toLowerCase()) {
case (FIREFOX):
return LOCAL.equalsIgnoreCase(remoteUrl) ? createFirefoxDriver(capabilities) : getRemoteDriver(getFirefoxDriverOptions(capabilities), remoteUrl, blackList.getBlacklistEntries());
case (MOBILE_DRIVER):
return LOCAL.equalsIgnoreCase(remoteUrl) ? new ChromeDriver(getMobileChromeOptions(capabilities)) : getRemoteDriver(getMobileChromeOptions(capabilities), remoteUrl, blackList.getBlacklistEntries());
case (OPERA):
return LOCAL.equalsIgnoreCase(remoteUrl) ? createOperaDriver(capabilities) : getRemoteDriver(getOperaRemoteDriverOptions(capabilities), remoteUrl, blackList.getBlacklistEntries());
case (SAFARI):
return LOCAL.equalsIgnoreCase(remoteUrl) ? createSafariDriver(capabilities) : getRemoteDriver(getSafariDriverOptions(capabilities), remoteUrl, blackList.getBlacklistEntries());
case (INTERNET_EXPLORER):
return LOCAL.equalsIgnoreCase(remoteUrl) ? createIEDriver(capabilities) : getRemoteDriver(getIEDriverOptions(capabilities), remoteUrl, blackList.getBlacklistEntries());
case (IE):
return LOCAL.equalsIgnoreCase(remoteUrl) ? createIEDriver(capabilities) : getRemoteDriver(getIEDriverOptions(capabilities), remoteUrl, blackList.getBlacklistEntries());
case (EDGE):
return LOCAL.equalsIgnoreCase(remoteUrl) ? createEdgeDriver(capabilities) : getRemoteDriver(getEdgeDriverOptions(capabilities), remoteUrl, blackList.getBlacklistEntries());
default:
return LOCAL.equalsIgnoreCase(remoteUrl) ? createChromeDriver(capabilities) : getRemoteDriver(getChromeDriverOptions(capabilities), remoteUrl, blackList.getBlacklistEntries());
}
}
private Browsers(DesiredCapabilities desiredCapabilities, Class<? extends WebDriver> driver) {
this(desiredCapabilities);
if (null == getDriverCls()) {
// not overridden by extra capability
setDriverCls(driver);
}
}
@SuppressWarnings("unchecked")
private Browsers(DesiredCapabilities desiredCapabilities, String drivercls) {
this(desiredCapabilities);
if (null == getDriverCls()) {
// not overridden by extra capability
try {
setDriverCls((Class<? extends WebDriver>) Class.forName(drivercls));
} catch (Exception e) {
// throw new AutomationError(e);
}
}
}
private boolean check(Supplier<Capabilities> capabilitiesSupplier,
BiPredicate<By, Class<? extends WebElement>> filter,
By by) {
service = AppiumDriverLocalService.buildDefaultService();
Capabilities caps = capabilitiesSupplier.get();
DesiredCapabilities fixedCaps = new DesiredCapabilities(caps);
fixedCaps.setCapability("commandTimeouts", "120000");
try {
driver = new AppiumDriver<>(service, fixedCaps);
} catch (SessionNotCreatedException e) {
fixedCaps.setCapability("useNewWDA", true);
driver = new AppiumDriver<>(service, fixedCaps);
}
return filter.test(by, IOSElement.class);
}
private static void testGetChromeWebDriver(WebDriverConfiguration configuration, ChromeOptions chromeOptions)
throws Exception
{
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
ChromeDriver expected = mock(ChromeDriver.class);
whenNew(ChromeDriver.class).withParameterTypes(ChromeOptions.class).withArguments(chromeOptions)
.thenReturn(expected);
WebDriver actual = WebDriverType.CHROME.getWebDriver(desiredCapabilities, configuration);
assertEquals(expected, actual);
}
@Test
@PrepareForTest(fullyQualifiedNames = "org.vividus.selenium.WebDriverType$1")
public void testGetFirefoxWebDriverWithCommandLineArguments() throws Exception
{
String argument = "headless";
WebDriverConfiguration configuration = new WebDriverConfiguration();
DesiredCapabilities desiredCapabilities = testGetFirefoxWebDriver(configuration);
FirefoxOptions expected = new FirefoxOptions();
expected.addArguments(argument);
assertEquals(expected.asMap(), desiredCapabilities.asMap());
}
@Test
public void whenAndroidHybridAppIsLaunched() {
assertTrue(check(() -> {
DesiredCapabilities clientCapabilities = commonCapabilitiesSupplier.get();
clientCapabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "io.appium.android.apis");
clientCapabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, ".view.WebView1");
return clientCapabilities;
}, (by, aClass) -> {
driver.context("WEBVIEW_io.appium.android.apis");
return commonPredicate.test(by, aClass);
}, tagName("a")));
}
protected DesiredCapabilities getDefaultCapabilities() {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.HAS_NATIVE_EVENTS, false);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
setOptionalProxyConfiguration(capabilities);
return capabilities;
}
@Test
public void shouldProperlyFillInACapabilitiesObject() {
DesiredCapabilities capabilities =
new DesiredCapabilities("browser", CapabilityType.VERSION, Platform.ANY);
capabilities.setJavascriptEnabled(true);
String text = new Json().toJson(capabilities);
Capabilities readCapabilities = new Json().toType(text, DesiredCapabilities.class);
assertThat(readCapabilities).isEqualTo(capabilities);
}
private static DesiredCapabilities capabilitiesAndroid() {
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
Map<String, String> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceName", "Google Nexus 5");
Map<String, Object> chromeOptions = new HashMap<>();
chromeOptions.put("mobileEmulation", mobileEmulation);
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
return capabilities;
}