下面列出了org.openqa.selenium.Platform#MAC 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* @return whether current driver connects to browser on a Mac
*/
public boolean connectedToMac() {
boolean isMac;
WebDriver driver = driver();
if (driver instanceof RemoteWebDriver) {
RemoteWebDriver remoteWebDriver = (RemoteWebDriver) driver;
Platform platform = remoteWebDriver.getCapabilities().getPlatform();
isMac = Platform.MAC == platform || Platform.MAC == platform.family();
} else {
isMac = SystemUtils.IS_OS_MAC;
}
return isMac;
}
@DataProvider
public Object[][] platforms() {
return new Object[][]{
{"win7", Platform.VISTA, true},
{"win7", "windows 7", true},
{"vista", Platform.VISTA, true},
{"darwin", Platform.MAC, true},
{Platform.ANY, Platform.LINUX, true},
{"linux", Platform.LINUX, true},
{"linux", Platform.UNIX, false},
{null, Platform.XP, true},
};
}
@Test
public void testShouldRegisterCorrectDefaultsOnMac() {
DefaultDriverFactory factory = new DefaultDriverFactory(Platform.MAC);
assertTrue(canInstantiate(factory, CHROME));
assertTrue(canInstantiate(factory, EDGE));
assertTrue(canInstantiate(factory, FIREFOX));
assertTrue(canInstantiate(factory, SAFARI));
assertFalse(canInstantiate(factory, IE));
}
/**
* ブラウザに対応する{@link PtlWebDriverFactory}のインスタンスを取得します。
*
* @param capabilities Capability(ブラウザの情報を含む)
* @return {@link PtlWebDriverFactory}のインスタンス
*/
public static PtlWebDriverFactory getInstance(PtlCapabilities capabilities) {
PtlTestConfig config = PtlTestConfig.getInstance();
EnvironmentConfig environmentConfig = config.getEnvironment();
TestAppConfig testAppConfig = config.getTestAppConfig();
String browserName = Strings.nullToEmpty(capabilities.getBrowserName()).toLowerCase(Locale.ENGLISH);
// IE
if ("internet explorer".equals(browserName)) {
String version = Strings.nullToEmpty(capabilities.getVersion());
if (version.startsWith("7")) {
return new PtlInternetExplorer7DriverFactory(environmentConfig, testAppConfig, capabilities);
}
if (version.startsWith("8")) {
return new PtlInternetExplorer8DriverFactory(environmentConfig, testAppConfig, capabilities);
}
return new PtlInternetExplorerDriverFactory(environmentConfig, testAppConfig, capabilities);
}
// Edge
if ("microsoftedge".equals(browserName)) {
return new PtlEdgeDriverFactory(environmentConfig, testAppConfig, capabilities);
}
// Android
if (capabilities.getPlatform() == Platform.ANDROID) {
// Selendroid (Android 2.3+)
String automationName = (String) capabilities.getCapability("automationName");
if (automationName != null && "selendroid".equalsIgnoreCase(automationName)) {
return new PtlSelendroidDriverFactory(environmentConfig, testAppConfig, capabilities);
}
// Default (Android 4.2+)
return new PtlAndroidDriverFactory(environmentConfig, testAppConfig, capabilities);
}
// Chrome
if ("chrome".equals(browserName)) {
return new PtlChromeWebDriverFactory(environmentConfig, testAppConfig, capabilities);
}
// Safari
if ("safari".equals(browserName)) {
// MacOSX
if (capabilities.getPlatform() == Platform.MAC) {
return new PtlSafariDriverFactory(environmentConfig, testAppConfig, capabilities);
}
String deviceName = capabilities.getDeviceName();
if (Strings.isNullOrEmpty(deviceName)) {
throw new TestRuntimeException("\"deviceName\" is required for iOS devices");
}
if (deviceName.contains("iPad")) {
return new PtlIPadDriverFactory(environmentConfig, testAppConfig, capabilities);
}
if (deviceName.contains("iPhone")) {
return new PtlIPhoneDriverFactory(environmentConfig, testAppConfig, capabilities);
}
throw new TestRuntimeException("Unknown deviceName \"" + deviceName + "\"");
}
// Other
return new PtlFirefoxWebDriverFactory(environmentConfig, testAppConfig, capabilities);
}