【发布时间】:2016-11-03 12:11:19
【问题描述】:
有人可以通过示例向我解释 Selenium Webdriver 中 DesiredCapabilities 的用途吗?
我对设置配置文件和使用 DesiredCapabilities 感到困惑。
【问题讨论】:
有人可以通过示例向我解释 Selenium Webdriver 中 DesiredCapabilities 的用途吗?
我对设置配置文件和使用 DesiredCapabilities 感到困惑。
【问题讨论】:
作为 WebDriver 的用户,您可以灵活地为浏览器创建会话,该会话具有您自己的一组浏览器应该或不应该具有的所需功能。使用 WebDriver 中的功能特性,您可以指定浏览器的行为方式。
浏览器功能的一些示例包括启用浏览器会话以支持截取网页的屏幕截图、在网页上执行自定义 JavaScript、启用浏览器会话以与窗口警报交互等等。
有许多特定于单个浏览器的功能,但也有一些特定功能对所有浏览器都是通用的。我们将在这里讨论其中的一些,其余的将在我们在本书中遇到这些特性时进行讨论。浏览器特定的功能将在下一章中更详细地讨论。
Capabilities 是 WebDriver 库中的一个接口,其直接实现是 DesiredCapabilities 类。创建具有特定功能的浏览器会话所涉及的一系列步骤如下:
确定您想要武装浏览器的所有功能。
让我们在启用 takeScreenShot 功能的同时创建一个 FirefoxDriver 实例:
public class BrowserCapabilities {
public static void main(String... args) {
Map capabilitiesMap = new HashMap();
capabilitiesMap.put("takesScreenShot", true);
DesiredCapabilities capabilities
= new DesiredCapabilities(capabilitiesMap);
WebDriver driver = new FirefoxDriver(capabilities);
driver.get("http://www.google.com");
}
}
在前面的代码中,我们在一个映射中设置了我们想要的所有功能,并使用该映射创建了一个 DesiredCapabilities 实例。现在,我们已经创建了具有这些功能的 FirefoxDriver 实例。这将启动一个 Firefox 浏览器,该浏览器将支持截取网页的屏幕截图。如果您看到 DesiredCapabilities 类的定义,就会发现该类的构造函数以许多不同的方式被重载。传递地图就是其中之一。您可以使用默认构造函数并创建 DesiredCapabilities 类的实例,然后使用 setCapability() 方法设置功能。
一些浏览器通用的默认功能如下表所示:
能力 它是做什么用的
takesScreenShot
Tells whether the browser session can take a screenshot of the webpage
handlesAlert
Tells whether the browser session can handle modal dialogs
cssSelectorsEnabled
Tells whether the browser session can use CSS selectors while searching for elements
javascriptEnabled
Enables/disables user-supplied JavaScript execution in the context of the webpage
acceptSSLCerts
Enables/disables the browser to accept all of the SSL certificates by default
webStorageEnabled
This is an HTML5 feature, and it is possible to enable or disable the browser session to interact with storage objects
There are many other capabilities of WebDriver.
来源:Satya Avasarala 所著的《Selenium WebDriver 实用指南》一书
【讨论】:
所需能力是一系列键/值对,存储浏览器名称、版本和系统中浏览器驱动程序的路径等浏览器属性,以确定浏览器在运行时的行为。
也可以用来配置Selenium WebDriver的驱动实例 比如 FirefoxDriver、ChromeDriver、InternetExplorerDriver。
一个例子:
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.ie.InternetExplorerDriver;
importorg.openqa.selenium.remote.DesiredCapabilities;
public class IEtestforDesiredCapabilities {
public static void main(String[] args) {
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "IE");
capabilities.setCapability(InternetExplorerDriver.
INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
System.setProperty("webdriver.ie.driver", "Put IEDriverServer path here");
WebDriver driver = newInternetExplorerDriver(capabilities);
driver.manage().window().maximize();
driver.get("http://www.yahoo.com");
driver.quit();
}
}
【讨论】: