为什么我们在selenium中创建驱动程序对象时进行类型转换?

时间:2017-11-27 13:54:47

标签: selenium-webdriver

WebDriver driver = new ChromeDriver();
driver.get("url");

在上面的代码中,我们曾经给过ChromeDriver driver = new ChromeDriver();(意味着我们正在进行类型转换),而不是提供WebDriver driver = new ChromeDriver();。我可以知道为什么我们这样做以及上面代码会发生什么?

1 个答案:

答案 0 :(得分:0)

在我看来,使用每个特定的驱动程序功能而不改变我们调用驱动程序的方式很有用。例如:

测试案例1:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions",
            "--disable-autofill-keyboard-accessory-view", "test-type");
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("credentials_enable_service", false);
prefs.put("profile.password_manager_enabled", false);
options.setExperimentalOption("prefs", prefs);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
capabilities.setCapability("elementScrollBehavior", 1);
driver = new ChromeDriver(capabilities);

测试案例2:

SafariOptions safariOpts = new SafariOptions();
safariOpts.setUseCleanSession(true);
safariOpts.setUseTechnologyPreview(true);
DesiredCapabilities cap = DesiredCapabilities.safari();
cap.setCapability(SafariOptions.CAPABILITY, safariOpts);
cap.setJavascriptEnabled(true);
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, "dismiss");
cap.setCapability("elementScrollBehavior", 1); // 0- from Top,
    // 1 - from
    // bottom
cap.setBrowserName("safari technology preview");
cap.setPlatform(Platform.MAC);
driver = new SafariDriver(cap);

如果您创建了一个具有可选驱动程序的类,则可以为所有浏览器提供相同的代码。并且您只需一次开发就可以在不同浏览器之间执行相同的测试用例。