【问题标题】:What is the use of DesiredCapabilities in Selenium WebDriver?Selenium WebDriver 中的 DesiredCapabilities 有什么用?
【发布时间】:2013-07-05 20:42:38
【问题描述】:

Selenium WebDriver 中的 DesiredCapabilities 有什么用?

我们什么时候想用这个,怎么用?

我们将不胜感激。

【问题讨论】:

    标签: selenium-webdriver


    【解决方案1】:

    您应该阅读有关DesiredCapabilities 的文档。 ChromeDriver 也有一个不同的页面。来自Capabilities的Javadoc:

    功能:描述一系列封装浏览器各个方面的键/值对。

    基本上,DesiredCapabilities 有助于设置 WebDriver 的属性。如果您的本地安装不符合默认设置,一个典型的用例是设置 FirefoxDriver 的路径。

    【讨论】:

    • Sauce Labs (link)' 平台就是一个很好的例子。右侧有一个框,显示您与 RemoteWebDriver 实例一起使用的 DesiredCapabilities,以从 Sauce 的服务请求具有该平台/浏览器/操作系统的 RemoteWebServer。
    【解决方案2】:
    1. 它是org.openqa.selenium.remote.DesiredCapabilities 包中的一个类。
    2. 它提供了设置浏览器属性的便利。比如设置BrowserName、Platform、Version of Browser。
    3. 我们在使用 Selenium Grid 时主要使用 DesiredCapabilities 类。
    4. 我们必须在具有不同浏览器、不同版本和不同操作系统的多个系统上执行多个测试用例。

    例子:

    WebDriver driver;
    String baseUrl , nodeUrl;
    baseUrl = "https://www.facebook.com";
    nodeUrl = "http://192.168.10.21:5568/wd/hub";
    
    DesiredCapabilities capability = DesiredCapabilities.firefox();
    capability.setBrowserName("firefox");
    capability.setPlatform(Platform.WIN8_1);
    
    driver = new RemoteWebDriver(new URL(nodeUrl),capability);
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(2, TimeUnit.MINUTES);
    

    【讨论】:

    • 最大化的例子非常有用,谢谢!我有一个正在测试的应用程序,当我从 VS 运行测试时,它有时只是最大化(取决于环境中的各种因素)而不是在前台。最大化线解决了这两个问题!
    【解决方案3】:

    我知道我回答这个问题已经很晚了。
    但是想添加对给出答案的进一步参考。
    DesiredCapabilities 的使用就像使用键值对设置您的配置一样。
    下面是一个与 Appium 相关的示例,用于自动化移动平台,例如 AndroidIOS
    所以我们通常设置DesiredCapabilities 来传达我们的WebDriver 来处理我们需要运行测试以缩小性能并提高准确性的特定内容。

    所以我们将我们的 DesiredCapabilities 设置为:

    // Created object of DesiredCapabilities class.
    DesiredCapabilities capabilities = new DesiredCapabilities();
    
    // Set android deviceName desired capability. Set your device name.
    capabilities.setCapability("deviceName", "your Device Name");
    
    // Set BROWSER_NAME desired capability.
    capabilities.setCapability(CapabilityType.BROWSER_NAME, "Chrome");
    
    // Set android VERSION desired capability. Set your mobile device's OS version.
    capabilities.setCapability(CapabilityType.VERSION, "5.1");
    
    // Set android platformName desired capability. It's Android in our case here.
    capabilities.setCapability("platformName", "Android");
    
    // Set android appPackage desired capability.
    

    //你需要为你的应用检查你的appPackage Name,你可以使用这个应用为那个APK INFO

    // Set your application's appPackage if you are using any other app. 
    capabilities.setCapability("appPackage", "com.android.appPackageName");
    
    // Set android appActivity desired capability. You can use the same app for finding appActivity of your app
    capabilities.setCapability("appActivity", "com.android.calculator2.Calculator");
    

    DesiredCapabilities 非常特定于Android 平台上的Appium。 更多可以参考Selenium官网desiredCapabilities class

    【讨论】:

      【解决方案4】:

      DesiredCapabilities 是可用于自定义和配置浏览器会话的选项。

      您可以阅读更多关于他们的信息here

      【讨论】:

        【解决方案5】:

        当您运行 selenium WebDriver 时,WebDriver 在您计算机的本地主机中打开一个远程服务器。现在,这个名为 Selenium Server 的服务器用于将您的代码解释为运行或“驱动”真实浏览器实例的操作,称为 chromebrowser,即 broser、ff 浏览器等。

        因此,Selenium 服务器可以与不同的浏览器属性进行交互,因此它具有许多“功能”。

        现在你想要什么能力?考虑一个场景,您正在验证文件是否已在您的应用程序中正确下载,但是您没有桌面自动化工具。如果您单击下载链接并弹出桌面,询问保存位置和/或是否要下载。您绕过它的下一条路线是抑制该弹出窗口。如何?所需的能力。

        还有其他这样的例子。总之,Selenium Server 可以做很多事情,使用 Desired Capabilities 来定制它以满足您的需求。

        【讨论】:

          【解决方案6】:

          在使用 selenium 网格进行远程或并行执行时,所需的功能会派上用场。我们将参数化浏览器详细信息并使用所需的功能类传递给 selenium 服务器。

          另一种用法是,使用 Appium 进行自动化测试,如下所示

          // Created object of DesiredCapabilities class. 
          DesiredCapabilities capabilities = new DesiredCapabilities(); 
          // Set android deviceName desired capability. Set your device name. 
          capabilities.setCapability("deviceName", "your Device Name"); 
          // Set BROWSER_NAME desired capability. 
          capabilities.setCapability(CapabilityType.BROWSER_NAME, "Chrome"); 
          // Set android VERSION desired capability. Set your mobile device's OS version. 
          capabilities.setCapability(CapabilityType.VERSION, "5.1"); 
          // Set android platformName desired capability. It's Android in our case here. 
          capabilities.setCapability("platformName", "Android"); 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-07
            • 2020-05-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-06
            相关资源
            最近更新 更多