Selenium WebDriver中的DesiredCapabilities有什么用途?

45

在Selenium WebDriver中,DesiredCapabilities有何用途?

我们什么时候需要使用它?

最好提供一个示例来回答。

6个回答

31
您应该阅读关于 DesiredCapabilities的文档。对于ChromeDriver有不同的页面。从Capabilities的Javadoc中可以了解:

Capabilities: 描述了封装浏览器方面的一系列键值对。

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


3
"Sauce Labs(链接)的平台展示了一个很好的例子。右侧有一个框,显示了您在使用RemoteWebDriver实例向Sauce的服务请求具有该平台/浏览器/操作系统的RemoteWebServer时所需的DesiredCapabilities。请注意,这些平台可以用于进行跨浏览器和跨平台的测试。" - Dylan Lacey

18
  1. 它是org.openqa.selenium.remote.DesiredCapabilities包中的一个类。
  2. 它提供了设置浏览器属性的功能。例如,设置BrowserName、Platform、Browser的Version。
  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运行测试时,它不在前台。最大化代码解决了这两个问题! - Ewan

6
我知道我回答这个问题很晚。
但是为了进一步参考给出的答案,我想补充说明一下。
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.

//您需要检查应用程序的包名称,您可以使用此应用程序进行检查APK INFO

请注意检查您的应用程序的包名称以确保您的IT技术工作顺利进行。

// 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(期望能力)是一种可以用来自定义和配置浏览器会话的选项。

你可以在这里了解更多详细信息!


1
当您运行Selenium WebDriver时,WebDriver会在您计算机的本地主机上打开一个远程服务器。现在,这个服务器被称为Selenium服务器,用于将您的代码解释为要运行或“驱动”的真实浏览器实例,例如chromebrowser,ie broser,ff browser等。
因此,Selenium服务器可以与不同的浏览器属性进行交互,因此它具有许多“功能”。
那么,您想要什么功能?考虑这样的情况:您正在验证应用程序中的文件是否已正确下载,但是您没有桌面自动化工具。如果您单击下载链接并出现桌面弹出窗口以询问保存位置和/或是否要下载,则绕过该窗口的下一个路线将是抑制该弹出窗口。如何做到?期望的能力。
还有其他类似的示例。总之,Selenium服务器可以做很多事情,使用期望的能力来满足您的需求。

0

在使用 Selenium Grid 进行远程或并行执行时,期望的功能非常有用。我们将对浏览器详细信息进行参数化,并使用期望的功能类将其传递到 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"); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接