Selenium WebDriver 中所需的功能

什么是所需功能?

所需功能 (Desired Capabilities) 是 Selenium 中的一个类,用于设置浏览器属性以执行 Web 应用程序的跨浏览器测试。它以键值对的形式存储功能,这些功能用于设置浏览器属性,如浏览器名称、浏览器版本、系统中浏览器驱动程序的路径等,以在运行时确定浏览器的行为。

  • 所需功能也可以用于配置 Selenium WebDriver 的驱动程序实例。
  • 我们可以使用所需功能配置 FirefoxDriver、ChromeDriver、InternetExplorerDriver 等驱动程序实例。

为什么我们需要所需功能?

需要所需功能,因为每个测试场景都应在特定的测试环境上执行。测试环境可以是 Web 浏览器、移动设备、移动模拟器、移动仿真器等。Desired Capabilities 类帮助我们告诉 WebDriver,我们将在测试脚本中使用哪种环境。

DesiredCapabilities 类的 setCapability 方法(本教程稍后会解释)可以在 Selenium Grid 中使用。它用于在不同的机器配置上执行并行执行。

示例:网格

Desired Capabilities in Selenium WebDriver

它用于设置在执行测试用例时使用的浏览器属性(例如 Chrome、IE)、平台名称(例如 Linux、Windows)。

在移动自动化中,由于我们对各种移动设备进行测试,可以设置移动平台(例如 iOS、Android)平台版本(例如 Android 中的 3.x、4.x)。

Desired Capabilities in Selenium WebDriver

上面的模拟器示例显示了设置为 Android 的平台和设置为 IceCream Sandwich (4.x) 的平台版本。

所需功能在以下情况下更有用:

  • 在移动应用程序自动化中,可以设置浏览器属性和设备属性。
  • 在 Selenium Grid 中,当我们要使用不同的操作系统和版本在不同的浏览器上运行测试用例时。

所需功能方法的类型

在这里,我们将看到不同类型的所需功能方法,并了解如何使用其中一种方法“setCapability 方法”。

#1) getBrowserName()

public java.lang.String getBrowserName()

#2) setBrowserName()

public void setBrowserName(java.lang.String browserName)

#3) getVersion()

public java.lang.String getVersion()

#4) setVersion()

public void setVersion(java.lang.String version)

#5) getPlatform()

public Platform getPlatform()

#6) setPlatform()

public Platform setPlatform()

#7) getCapability() 方法

DesiredCapabilities 类的 getCapability() 方法可用于获取系统中当前使用的功能。

public java.lang.Object getCapability(java.lang.String capabilityName)

#8) setCapability() 方法

Desired Capabilities 类的 setCapability() 方法用于设置测试环境的属性,如设备名称、操作系统名称和版本、浏览器名称和版本、被测应用程序的绝对路径(被测 Android 应用程序的 .apk 文件)、应用程序活动(在 Android 中)和应用程序包(在 Java 中)。

“setCapability 方法”Java 中有以下声明

setCapability : public void setCapability(java.lang.String capabilityName,boolean value)
setCapability  :public void setCapability(java.lang.String capabilityName,java.lang.String value)
setCapability  :public void setCapability(java.lang.String capabilityName,Platform value)
setCapability  :public void setCapability(java.lang.String key,java.lang.Object value)

Selenium 中设置功能示例

让我们考虑一个示例,我们想使用 Selenium Webdriver 在 Internet Explorer 浏览器上运行我们的测试用例来打开 www.gmail.com 网站。

以下是代码。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class IEtestforDesiredCapabilities {
  
 public static void main(String[] args) {
  
WebDriver driver = new InternetExplorerDriver();
 driver.manage().window().maximize();
 driver.get("http://gmail.com");
  
 driver.quit();
 }
  
}

现在从 Eclipse 运行此代码并检查控制台。

输出

执行上述代码时,它将抛出以下错误。发生此错误是因为未设置浏览器驱动程序(在上述情况下为 IE)的路径。Selenium 代码无法找到浏览器。

The path to the driver executable must be set by the webdriver.ie.driver system property; formore information, see http://code.google.com/p/selenium/wiki/InternetExplorerDriver. The latest version can be downloaded from http://code.google.com/p/selenium/downloads/list

Dec 11, 201212:59:43PM org.openqa.selenium.ie.InternetExplorerDriverServer initializeLib

WARNING: This method of starting the IE driver is deprecated and will be removed in selenium 2.26. Please download the IEDriverServer.exe from http://code.google.com/p/selenium/downloads/list and ensure that it is in your PATH.

解决方案:

上述问题的解决方案在错误本身的警告部分给出。

  • 下载 32 位或 64 位的 Internet ExplorerDriver 独立服务器。
  • 将驱动程序保存在系统中合适的路径。
  • 使用 System.setProperty 方法设置驱动程序的路径。
  • 它用于将 IE 驱动程序与 WebDriver 属性一起设置。它有助于定位存储在系统位置的可执行驱动程序文件。(例如:“C:\IEDriverLocation\IEDriver.exe”)
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

public class IEtestforDesiredCapabilities {
  
 public static void main(String[] args) {

//it is used to define IE capability 
 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", "C:\\IEDriverServer.exe");
  
 //it is used to initialize the IE driver
 WebDriver driver = new InternetExplorerDriver(capabilities);
  
 driver.manage().window().maximize();

 driver.get("http://gmail.com");
  
 driver.quit();
 }
  
}

代码解释

在上述代码中,

  • 导入语句用于导入 Selenium WebDriver 所需的包、Internet Explorer 驱动程序所需的包、所需功能的包。
  • setCapability 将各种功能作为输入变量,然后由 WebDriver 使用这些功能在所需环境中启动应用程序。
  • setProperty 用于设置驱动程序所在的路径。WebDriver 然后定位所需的驱动程序。
  • 使用“get”方法在 Internet Explorer 浏览器中打开 Gmail 网站。

输出

Internet Explorer 浏览器上的测试用例将使用 Selenium WebDriver 成功运行。

结论

Desired Capabilities 类将有助于设置环境来定义浏览器/环境的行为,在该浏览器/环境上可以执行测试。

它有助于在具有我们希望使用的功能的所需环境中启动我们的应用程序。