所需能力 Selenium 网络驱动程序

⚡ 智能摘要

所需能力是 Selenium 该类将浏览器、平台和设备设置存储为键值对,从而使单个测试套件能够针对多个环境进行测试。 Selenium 网格、云网格和移动自动化。

  • 🔘 定义: 键值对,分别表示浏览器、版本、平台和驱动程序路径。
  • ☑️ 目的: 一套软件套件可在浏览器、操作系统和移动设备上运行。
  • 方法: setCapability()、getCapability()、setBrowserName()、setVersion() 和 setPlatform() 描述环境。
  • 🧪 计费示例: Internet Explorer 的操作步骤重现了驱动程序路径错误及其解决方法。
  • 🛠️ 现代对应词: Selenium 4 在浏览器选项类中具有相同的设置。

所需能力 Selenium 网络驱动程序

所需能力是什么?

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

  • 所需的功能也可用于配置驱动程序实例 Selenium WebDriver。
  • 我们可以像这样配置驱动程序实例 Firefox通过使用所需的功能,驱动程序、ChromeDriver、InternetExplorerDriver。

版本说明: Selenium 4 使用浏览器选项类(ChromeOptions)取代 DesiredCapabilities, FirefoxOptions、EdgeOptions、InternetExplorerOptions。以下示例保留了原始语法。

为什么我们需要期望能力?

所需的能力是必要的,因为每 测试与验证 场景应该在某些特定的测试环境中执行。测试环境可以是 Web 浏览器, 电话 设备、移动模拟器、移动仿真器等等。所需功能类帮助我们告诉 WebDriver,我们将在测试脚本中使用哪个环境。

本页稍后部分将解释 DesiredCapabilities 类的 setCapability 方法,该方法可用于: Selenium 网格。它用于执行 并行执行 在不同的机器配置上。

例如:网格(如下所示)。

Selenium 由所需能力驱动的电网设置

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

在移动自动化的情况下,当我们在不同类型的移动设备上进行测试时,移动平台(例如 iOS, Android) 平台版本(例如 3.x、4.x Android) 可以设置。

下面的模拟器示例显示了平台集为 android,平台版本集为 IceCream Sandwich (4.x)。

移动模拟器功能已设置为 Android 平台和版本 4.x

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

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

所需能力的类型方法

在这里,我们将看到不同的所需功能方法以及如何使用其中一种方法,即 setCapability() 方法。

#1)获取浏览器名称()

public java.lang.String getBrowserName()

#2)设置浏览器名称()

public void setBrowserName(java.lang.String browserName)

#3)获取版本()

public java.lang.String getVersion()

#4)设置版本()

public void setVersion(java.lang.String version)

#5)获取平台()

public Platform getPlatform()

#6)设置平台()

public Platform setPlatform()

#7) getCapability() 方法

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

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

#8) setCapability() 方法

Desired Capabilities 类的 setCapability() 方法用于设置测试环境的属性,例如设备名称、操作系统名称和版本、浏览器名称和版本以及被测应用程序的绝对路径(即 .apk 文件)。 Android 被测应用程序)、应用程序活动( Android)和 appPackage(在 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 例如:

让我们考虑一个例子,假设我们要在 Internet Explorer 浏览器上运行测试用例,以打开 www.gmail.com 网站。 Selenium WebDriver。

以下是代码。

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.

解决方案:

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

  1. 下载适用于 32 位或 64 位的 Internet ExplorerDriver 独立服务器。
  2. 将驱动程序保存在系统中合适的位置。
  3. 使用 System.setProperty 方法设置驱动程序的路径。它用于通过 webdriver 属性设置 IE 驱动程序。这有助于找到存储在系统位置的驱动程序可执行文件。(例如:“C:\IEDriverLocation\IEDriver.exe”)

版本说明: Selenium 4.6 及更高版本通过以下方式自动解决驱动程序问题 Selenium 由于是管理器,所以 `System.setProperty` 是可选的。以下历史代码保持不变。

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();
 }
  
}

Code 说明:

在上面的代码中,

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

输出:

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

常见问题

它保留是为了向后兼容,但实际上是遗留系统。 Selenium 4 通过符合 W3C 标准的浏览器 Options 对象路由会话,因此新的套件应该优先选择 Options。

ChromeOptions, FirefoxOptions、EdgeOptions、SafariOptions 和 InternetExplorerOptions。每个对象都直接传递给匹配的驱动程序构造函数或 RemoteWebDriver。

只有 browserName、browserVersion、platformName、acceptInsecureCerts、pageLoadStrategy、proxy、timeouts 和 unhandledPromptBehavior 是标准配置项。其他任何配置项都需要添加厂商前缀,例如 goog:chromeOptions。

Appium 需要 platformName、automationName、deviceName 以及 app 或 appPackage 加上 appActivity,所有这些都以 appium: 前缀编写。

不。来自 Selenium Selenium 经理 自动下载匹配的驱动程序。仅当需要锁定特定驱动程序版本时才需要设置此项。

云供应商读取相同的键值对来分配浏览器、操作系统和设备,以及供应商前缀的额外信息,例如构建名称。

AI 模型挖掘生产分析和缺陷历史记录,对哪些浏览器、版本和设备组合值得覆盖进行排名,从而简化难以管理的矩阵。

副驾驶 可以快速生成功能块,但经常建议使用从旧代码中学到的已弃用的 DesiredCapabilities 语法,因此请检查生成的每一行。

总结一下这篇文章: