44

Selenium WebDriver 中的 DesiredCapabilities 有什么用?

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

以示例回答将不胜感激。

4

6 回答 6

31

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

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

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

于 2013-07-08T13:40:14.353 回答
18
  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);
于 2015-03-28T06:25:07.587 回答
6

我知道我回答这个问题已经很晚了。
但是想添加对给出答案的进一步参考。
DesiredCapabilities就像使用键值对设置配置一样使用。
下面是一个与Appium用于自动化移动平台(如Android和)相关的示例IOS
因此,我们通常设置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信息

// 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上非常具体。更多内容可以参考 Selenium 的官方网站desiredCapabilities 类AppiumAndroid

于 2016-07-05T06:29:03.887 回答
4

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

你可以在这里阅读更多关于它们的信息!

于 2014-05-26T10:29:38.347 回答
1

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

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

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

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

于 2017-09-19T03:13:40.697 回答
0

使用 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"); 
于 2017-04-16T17:28:15.900 回答