有人可以向我解释一下Selenium Webdriver中DesiredCapabilities的用途是什么?
我对设置个人资料和使用DesiredCapabilities感到困惑。
答案 0 :(得分:2)
作为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()方法设置功能。</ p>
下表显示了浏览器中常见的一些默认功能:
能力 它用于什么
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.
来源:Book&#34; Selenium WebDriver实用指南&#34;作者:Satya Avasarala
答案 1 :(得分:0)
所需功能是一系列键/值对,用于存储浏览器属性,如浏览器名称,versioN和系统中浏览器驱动程序的路径等,以确定浏览器在运行时的行为。
它还可用于配置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();
}
}