任何人都可以用Selenium Webdriver解释DesiredCapabilities类的使用吗?

时间:2016-11-03 12:11:19

标签: selenium webdriver

有人可以向我解释一下Selenium Webdriver中DesiredCapabilities的用途是什么?

我对设置个人资料和使用DesiredCapabilities感到困惑。

2 个答案:

答案 0 :(得分:2)

作为WebDriver的用户,您可以灵活地使用浏览器应该或不应具有的一组所需功能为浏览器创建会话。使用WebDriver中的功能功能,您可以指定选择浏览器的行为方式。

浏览器功能的一些示例包括启用浏览器会话以支持截取网页,在网页上执行自定义JavaScript,使浏览器会话与窗口警报交互等等。

有许多特定于各个浏览器的功能,但是有一些特定功能对所有浏览器都是通用的。我们将在这里讨论其中一些,剩下的,当我们遇到本书中的这些功能时。特定于浏览器的功能将在下一章中详细讨论。

Capabilities是WebDriver库中的一个接口,其直接实现是DesiredCapabilities类。创建具有特定功能的浏览器会话所涉及的一系列步骤如下:

确定您想要使用浏览器的所有功能。

  1. 创建DesiredCapabilities类实例并为其设置所有功能。
  2. 现在,创建一个WebDriver实例,并将所有上述功能传递给它。
  3. 这将创建一个Firefox / IE / Chrome实例或您使用所有所需功能实例化的浏览器。
  4. 在启用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();
 }

}