selenium 示例
所需功能是用于声明一组基本要求(例如浏览器,操作系统,浏览器版本等的组合)的类,以对Web应用程序执行自动跨浏览器测试。
当我们尝试通过Selenium自动化测试来自动化测试脚本时,我们需要考虑这些组合,以声明一个特定的测试环境,在该环境下,我们的网站或Web应用程序应无缝呈现。
这些环境可以是移动设备,移动浏览器,桌面设备,桌面浏览器,屏幕分辨率等。要在我们的Selenium自动化测试脚本中声明这些环境,我们在Selenium测试或Appium测试中使用了所需功能,这正是我们将在本文中讨论。
我将帮助您熟悉Selenium测试中的所需功能和Appium的所需功能。 我将通过示例向您展示它们的含义,它们如何用于Selenium自动化测试和Appium测试。 事不宜迟,让我们开始吧。
什么是所需功能?
所需功能类是org.openqa.selenium.remote.DesiredCapabilities包的组件。 它有助于Selenium WebDriver设置浏览器的属性。 因此,使用与Desired Capabilities类不同的功能,我们可以设置浏览器的属性。 例如,浏览器的名称,浏览器的版本等。我们使用这些功能作为键值对来为浏览器设置它们。
您可以参考github库以获得所需的功能的所有详细方法等。
在进行Selenium自动化测试时,我们在执行时总是有不同的要求,特别是要执行哪个浏览器,用于测试执行的操作系统和版本,这在Selenium Grid上对Desired Capabilities有很大帮助。
要在使用Grid的Selenium自动化测试中声明Desired Capabilities,我们可以使用DesiredCapabilities类中的setCapability方法来设置浏览器的不同类型的功能(例如Chrome,IE,Firefox,Edge)平台名称(例如Windows,macOS)等)。
设置Selenium网格以在不同的浏览器中并行执行
Appium中的所需功能对于移动应用程序自动化非常有用,在这种情况下,我们必须对不同的浏览器属性和设备属性执行测试自动化 ,可以使用“所需功能”类进行设置。 为了对不同类型的移动设备,iOS,Android等不同类型的移动平台进行自动化测试 。此外,可以有不同的平台(操作系统)版本,例如Android 9.x,10.x和iOS 12 .x,13.x等,我们可以根据需要使用Appium for Android或iOS中的“所需功能”来设置这些属性。
Selenium和砷还有更多所需功能
通过使用Desired Capabilities类,我们向WebDriver指示了有关环境,例如浏览器名称,浏览器版本,平台等,我们将使用自动化脚本在该环境上执行自动化浏览器测试 。 但这不是我们使用Desired Capabilities类所能做的。 我们还可以配置特定于浏览器的首选项,例如启用chrome选项,firefox选项,使用隐身模式进行测试,甚至禁用javascript等。
使用禁用JavaScript设置进行Selenium自动化测试
如果您使用的是基于云的在线Selenium网格 ,那么Desired Capabilities类也可以用于与Selenium或Appium进行并行测试,使用Selenium 测试本地托管的Web应用程序 ,生成按命令的屏幕截图,甚至是视频通过不同的浏览器和OS配置记录整个测试自动化执行情况。
所需功能类型的方法
现在,让我们讨论所需功能类中可用的不同方法,以在测试自动化中设置不同的属性。
public java.lang.Object getCapability(java.lang.String capabilityName)类Desired Capabilities中的getCapability()方法,该方法可用于获取我们正在使用的当前系统的功能。
public java.lang.Object getCapability(java.lang.String capabilityName)该类来自Desired Capabilities的setCapability()方法可用于设置设备名称,平台名称,平台版本,被测应用程序的绝对路径,应用程序活动(在移动自动化中),应用程序包( Java)等
public java.lang.String getBrowserName()类Desired Capabilities中的getBrowserName()方法可用于获取浏览器的名称。
public void setBrowserName(java.lang.String browserName)类Desired Capabilities中的setBrowserName()方法可用于设置浏览器的名称。
public java.lang.String getVersion()类Desired Capabilities中的getVersion()方法可用于获取浏览器或平台的版本。
public void setVersion(java.lang.String version)类Desired Capabilities中的setVersion()方法可用于设置浏览器或平台的版本。
public Platform getPlatform()类Desired Capabilities中的getPlatform()方法可用于获取平台的详细信息。
public Platform setPlatform()类Desired Capabilities中的setPlatform()方法可用于设置平台的详细信息。
有关更多信息,您可以参考Selenium文档 。
针对不同浏览器进行Selenium测试所需的功能
在上一节中,我们看到了所需功能类的不同方法。 现在,让我们讨论如何为不同的浏览器设置不同的功能。
Selenium WebDriver for Chrome中所需的功能
当我们要自定义和配置Selenium WebDriver for Chrome中的所需功能时,我们需要调用ChromeDriver会话以利用这些功能。 因此,让我们讨论ChromeDriver支持的功能,以及如何使用它们在Selenium Webdriver for Chrome中设置所需的功能。
有两种方法可以设置ChromeDriver的功能。
1. ChromeOptions
2.所需功能
ChromeOptions是另一类,可以与Selenium WebDriver for Chrome中的所需功能结合使用,以自定义或操作Chrome浏览器的各种属性。
以下是ChromeOptions类的常用参数
Disable-infobars:用于阻止chrome浏览器显示诸如“ Chrome正在由自动化软件控制”之类的通知。
Make-default-browser:用于将chrome浏览器设置为默认浏览器。
Disable-popup-blocking:禁用chrome浏览器中显示的弹出窗口。
隐身模式:以隐身模式打开Chrome浏览器
start -maximized:以最大化模式打开Chrome浏览器
无头:用于以无头模式打开Chrome浏览器。
现在,让我们讨论一个广告拦截器的示例,其中将Chrome Option与Desired Capabilities类结合使用。 为此,我们将使用adblocker扩展程序。
前提条件是应下载扩展名的crx文件 。
//Setting up capabilities to run our test script
ChromeOptions opt = new ChromeOptions();opt.addExtensions(new File(“path for crx file of the extension”));DesiredCapabilities capabilities = new DesiredCapabilities();capabilities.setCapability(ChromeOptions.CAPABILITY, options);ChromeDriver driver = new ChromeDriver(capabilities);Selenium WebDriver for Firefox中所需的功能
就像我们在Chrome浏览器中看到的那样,还有一些方法可以自定义Firefox浏览器的Selenium WebDriver中的所需功能。
moz:firefoxOptions功能专门用于Firefox浏览器。 我们可以使用moz:firefoxOptions来自定义或操纵Firefox浏览器的不同属性,这有助于我们控制Firefox浏览器的行为。 它通常作为两者之一的成员被调用,一个来自alwaysMatch ,另一个来自firstMatch条目。
moz:firefoxOptions可以包含以下内容,这些内容可以控制Firefox浏览器的启动或运行方式。
a)binary(String):我们提供供自定义Firefox二进制文件使用的绝对路径。 通常,GeckoDriver(我们用于Firefox的驱动程序)会尝试查找Firefox在当前系统上的位置(如果未定义)。
b)args(字符串数组):此参数用于将命令行参数传递给Firefox二进制文件。 使用此语法时,应包含连字符/连字符,例如[“ -profile”]。
因此,要通过GeckoDriver提取现有配置文件,我们应该使用如下语法
[“-个人资料”,“个人资料的路径”]
c)profile(string):我们可以提供目录的路径,以便可以使用Firefox实例。 要安装某些firefox扩展名或某些自定义证书,我们可以使用它。 虽然建议在我们要设置自定义首选项的同时使用首选项,而不要直接传递配置文件。 您可以在下面找到其他偏好的示例。
这是在Firefox的Selenium WebDriver中声明所需功能的示例。
{"capabilities": {"alwaysMatch": {"moz:firefoxOptions": {"binary": "/usr/local/firefox/bin/firefox","args": ["-headless", "-profile", "/path/to/my/profile"],"prefs": {"dom.ipc.processCount": 9,"javascript.options.showInConsole": true},"log": {"level": "trace"}}}}}
if(driverParameter == null || driverParameter.equalsIgnoreCase(FIREFOX))
{DesiredCapabilities capabilities = DesiredCapabilities.firefox();FirefoxOptions options = new FirefoxOptions();options.setHeadless(headless);capabilities.merge(options);
}IE(Internet Explorer)的Selenium WebDriver中所需的功能
现在,让我们继续进行Selenium WebDriver for IE(Internet Explorer)中的所需功能。 对于IE,我们使用Selenium WebDriver中具有所需功能的InternetExplorerOptions 。
这是在Selenium WebDriver for IE中声明所需功能的示例。
if(driverParameter == null || driverParameter.equalsIgnoreCase(IE))
{DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();InternetExplorerOptions option = new InternetExplorerOptions();option.setHeadless(headless);capabilities.merge(option);
}我们几乎没有可以使用的Internet Explorer特定功能,让我们一一讨论。
a)ignoreZoomSetting(boolean):此功能可用于忽略对浏览器的缩放级别达到100%的检查。 默认情况下,它设置为false。 它需要一个布尔值作为输入。
b)initialBrowserUrl(string):使用此功能,我们可以确定初始URL,即Internet Explorer浏览器启动时应重定向到的初始URL。 它以字符串作为输入。
c)enableElementCacheCleanup(boolean):此功能提供对元素缓存中过时元素的检查。 如果找到它们,该功能将指示WebDriver进行清理。 它需要一个布尔值作为输入。
d)requireWindowFocus(boolean):此功能用于指示驱动程序在执行任何操作(如鼠标或键盘事件等)之前检查Internet Explorer窗口是否具有焦点。它采用布尔值作为输入,默认情况下,它是设为假。
e)ignoreProtectedModeSettings(boolean):如果您希望在执行Selenium自动化测试时跳过保护模式检查,则可以利用此功能。 它需要一个布尔值作为输入。
因此,这些是我们可以使用的某些Internet Explorer特定功能。
不同语言的Selenium测试中所需功能的示例
现在,我将向您演示如何在使用不同语言的Selenium测试中利用所需功能。 您可能已经知道,Selenium自动化测试受多种编程语言支持。 它为每种主要编程语言(例如JavaScript,C#,Python,Java,Ruby,PHP)提供绑定。 为了让您了解如何在Selenium测试中利用所需的功能,我将提供Java,C#和Python的示例。
Selenium WebDriver for Java中所需的功能
//Setting up capabilities to run our test script@BeforeClasspublic void setUp() throws Exception {DesiredCapabilities capabilities = new DesiredCapabilities();capabilities.setCapability("browserName", "chrome");capabilities.setCapability("version", "77.0");capabilities.setCapability("platform", "win10"); // If this cap isn't specified, it will just get any available onecapabilities.setCapability("build", "LambdaTestSampleApp");capabilities.setCapability("name", "LambdaTestJavaSample");capabilities.setCapability("network", true); // To enable network logscapabilities.setCapability("visual", true); // To enable step by step screenshotcapabilities.setCapability("video", true); // To enable video recordingcapabilities.setCapability("console", true); // To capture console logscapabilities.setCapability("selenium_version","4.0.0-alpha-2");capabilities.setCapability("timezone","UTC+05:30");capabilities.setCapability("geoLocation","IN");capabilities.setCapability("chrome.driver","78.0");try {driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);} catch (MalformedURLException e) {System.out.println("Invalid grid URL");} catch (Exception e) {System.out.println(e.getMessage());}}Selenium WebDriver for C#所需的功能
//Accept all certificates Chrome
DesiredCapabilities capability = DesiredCapabilities.Chrome();
Environment.SetEnvironmentVariable("webdriver.chrome.driver", "Path to ChromeDriver.exe");
capability.SetCapability(CapabilityType.AcceptSslCertificates, true);
IWebDriver driver = new RemoteWebDriver(capability);//Set Chrome options.
ChromeOptions options = new ChromeOptions();
DesiredCapabilities dc = DesiredCapabilities.Chrome();
dc.SetCapability(ChromeOptions.Capability, options);
IWebDriver driver = new RemoteWebDriver(dc);//Turn off the JavaScript Firefox
FirefoxProfileManager profileManager = new FirefoxProfileManager();
FirefoxProfile profile = profileManager.GetProfile("TestProfile");
profile.SetPreference("javascript.enabled", false);
IWebDriver driver = new FirefoxDriver(profile);//Set the default page load timeout
driver.Manage().Timeouts().SetPageLoadTimeout(new TimeSpan(10));//Start Firefox with plugins
FirefoxProfile prof = new FirefoxProfile();
profile.AddExtension(@"C:Location of extension.xpi");
IWebDriver driver = new FirefoxDriver(prof);//Start Chrome with an unpacked extension
ChromeOptions options = new ChromeOptions();
options.AddArguments("load-extension=/pathTo/extension");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.SetCapability(ChromeOptions.Capability, options);
DesiredCapabilities dc = DesiredCapabilities.Chrome();
dc.SetCapability(ChromeOptions.Capability, options);
IWebDriver driver = new RemoteWebDriver(dc);//Start Chrome with a packed extension
ChromeOptions options = new ChromeOptions();
options.AddExtension(Path.GetFullPath("localpathto/extension.crx"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.SetCapability(ChromeOptions.Capability, options);
DesiredCapabilities dc = DesiredCapabilities.Chrome();
dc.SetCapability(ChromeOptions.Capability, options);
IWebDriver driver = new RemoteWebDriver(dc);Selenium WebDriver for Python中所需的功能
def _get_desired_capabilities():""""""platform = _TEST_SETTINGS['PLATFORM']browser = _TEST_SETTINGS['BROWSER']version = _TEST_SETTINGS['VERSION']if platform and browser:capabilities = {'platform': platform,'browserName': browser,'version': version,}elif browser.lower() == 'firefox':capabilities = DesiredCapabilities.FIREFOXelse:capabilities = DesiredCapabilities.CHROMEreturn _add_travis_info(capabilities)def run_browser(self,os_name,os_version,browser,browser_version):USERNAME = ‘test.lambdatest@gmail.com’PASSWORD = ‘Test123’if browser.lower() == 'ff' or browser.lower() == 'firefox':desired_capabilities = DesiredCapabilities.FIREFOX elif browser.lower() == 'ie':desired_capabilities = DesiredCapabilities.INTERNETEXPLORERelif browser.lower() == 'chrome':desired_capabilities = DesiredCapabilities.CHROME elif browser.lower() == 'opera':desired_capabilities = DesiredCapabilities.OPERA elif browser.lower() == 'safari':desired_capabilities = DesiredCapabilities.SAFARIdesired_capabilities['os'] = os_namedesired_capabilities['os_version'] = os_versiondesired_capabilities['browser_version'] = browser_versionreturn webdriver.Remote(RemoteConnection("http://%s:%s@hub-cloud.browser.com/wd/hub"%(USERNAME,PASSWORD),resolve_ip= False),desired_capabilities=desired_capabilities)使用LambdaTest Capabilities Generator设置Selenium功能
Lambdatest是基于云的跨浏览器测试工具,可让您在包含2000多种实际浏览器的在线Selenium Grid上执行Selenium自动化测试。 Selenium支持的所有语言和框架都与LambdaTest兼容。
您还将获得与众多第三方CI / CD工具,项目管理工具,协作工具等的集成。
作为在线Selenium Grid即服务提供商,我们了解DesiredCapabilities在您的Selenium自动化测试体验中的重要性。 我们还了解到,每次要在数百种浏览器和操作系统组合上运行测试时,写下您所需的功能可能要花费大量时间。 这就是为什么我们会提供一个在线DesiredCapabilities Generator的原因 ,该发生器根据您的点击选择为您提供多种编程语言的DesiredCapabilities类。
因此,当我们使用上述URL从LambdaTest导航至功能生成器时,您将看到如下屏幕
正如我们在上面的屏幕截图中看到的那样,我们可以选择我们要在测试脚本中使用的属性,并在选择所需的信息后生成所需的功能。
以下屏幕显示了生成的功能,我们可以在测试脚本中直接使用这些功能。
您是否注意到我们在Selenium 4中使用了所需功能? 如果看上面的图片,您会发现在Selenium 4标签下的下拉菜单中进行了点击选择。
LambdaTest功能生成器上的Selenium 4所需功能
使用LambdaTest作为在线Selenium Grid的另一个巨大好处。 您将获得最新的浏览器,浏览器版本以及在我们的云服务器上托管的计算机上预安装的操作系统。 那还不是全部! 您还将获得最新的Selenium 4所需功能,所有这些功能都可以在您的自动浏览器测试脚本中启动。
在Selenium测试中结合了所需功能的示例脚本
现在,让我们举一个简单的例子来演示如何在Selenium自动化测试脚本中适合这些所需的功能。 因此,当我们准备好生成所需的所需功能时,我们已在以下测试脚本中使用了该脚本,该脚本可在多个浏览器上执行,以使用LambdaTest提供的Selenium Grid在2000多种真实浏览器上执行跨浏览器测试。
自动化脚本示例:
package com.lambdatest;//TestNG Todo : Sample App
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.testng.asserts.Assertion;import com.beust.jcommander.Parameter;import java.net.MalformedURLException;
import java.net.URL;
import java.util.Set;
import java.util.concurrent.TimeUnit;public class Test2{public String username = "Your_LambdaTest_Username";public String accesskey = "Your_LambdaTest_Access_Key";public static RemoteWebDriver driver = null;public String gridURL = "@hub.lambdatest.com/wd/hub";boolean status = false;//Setting up capabilities to run our test script@Parameters(value= {"browser","version"})@BeforeClasspublic void setUp(String browser, String version) throws Exception {DesiredCapabilities capabilities = new DesiredCapabilities();capabilities.setCapability("browserName", browser);capabilities.setCapability("version", version);capabilities.setCapability("platform", "win10"); // If this cap isn't specified, it will just get the any available onecapabilities.setCapability("build", "LambdaTestSampleApp");capabilities.setCapability("name", "LambdaTestJavaSample");capabilities.setCapability("network", true); // To enable network logscapabilities.setCapability("visual", true); // To enable step by step screenshotcapabilities.setCapability("video", true); // To enable video recordingcapabilities.setCapability("console", true); // To capture console logscapabilities.setCapability("selenium_version","4.0.0-alpha-2");capabilities.setCapability("timezone","UTC+05:30");capabilities.setCapability("geoLocation","IN");capabilities.setCapability("chrome.driver","78.0");try {driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);} catch (MalformedURLException e) {System.out.println("Invalid grid URL");} catch (Exception e) {System.out.println(e.getMessage());}}//Opening browser with the given URL and navigate to Registration Page@BeforeMethodpublic void openBrowser(){// driver.manage().deleteAllCookies();driver.get("https://www.lambdatest.com/");driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);driver.manage().timeouts().pageLoadTimeout(15, TimeUnit.SECONDS);WebElement signUpButton = driver.findElement(By.xpath("//a[contains(text(),'Start Free Testing')]"));signUpButton.click(); }//Verifying elements on Registration page@Testpublic void verifyElementsOnPageTest(){WebElement lambdaTestLogo = driver.findElement(By.xpath("//p[@class='signup-titel']"));lambdaTestLogo.isDisplayed();WebElement signUpTitle = driver.findElement(By.xpath("//p[@class='signup-titel']"));signUpTitle.isDisplayed();WebElement termsText = driver.findElement(By.xpath("//label[@class='woo']"));termsText.isDisplayed();WebElement loginLinkText = driver.findElement(By.xpath("//p[@class='login-in-link test-left']"));loginLinkText.isDisplayed();} // Closing the browser session after completing each test case@AfterClasspublic void tearDown() throws Exception {if (driver != null) {((JavascriptExecutor) driver).executeScript("lambda-status=" + status);driver.quit();}}
}<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite thread-count="3" name="LambaTestSuite" parallel="tests"><test name="ChromeTest"><parameter name="browser" value="chrome"/><parameter name="version" value="77.0"/><classes><class name="com.lambdatest.Test2"/></classes></test> <!-- Test --></suite> <!-- Suite -->LambdaTest自动化仪表板上的输出
在LambdaTest的在线Selenium Grid上执行上述脚本后,我们通过LambdaTest上的自动化仪表板获得以下自动化日志。 您会在自动化仪表盘下获得不同类型的日志,例如网络日志,命令日志,元数据,视频记录,屏幕截图等。在下面的屏幕截图中,我希望您关注LambdaTest提供的原始Selenium日志。
您会注意到自动化脚本中声明的功能在那里显示。
Appium中用于移动自动化的所需功能
到现在为止,我们已经看到了期望的功能,这些功能具有不同的语言,浏览器和可用的不同方法。 我希望到目前为止,您对如何在Selenium自动化测试中使用所需功能有了一个好主意。 但是,Selenium自动化测试只能确保您的Web应用程序可用于台式设备,但客户可能会使用其移动设备来访问您的Web应用程序或网站,尤其是您的博客页面。
我们生活在移动优先时代。 仅在桌面上进行自动浏览器测试不能确保您的网站与跨浏览器兼容 。 几乎每个企业都在向数字化发展,因此它要求网站或Web应用程序同时支持台式机和移动设备。 这意味着您可能还必须通过移动浏览器执行自动浏览器测试!
那么,我们如何为移动浏览器执行自动浏览器测试? 好消息是,还有另一个引人注目的开源框架可以帮助您实现这一目的,它被称为Appium。
现在,我们将讨论Appium测试,以及如何在Appium中使用所需的功能。
因此,对平台或操作系统(例如Android,iOS),平台版本,设备等可能会有不同的要求,这些要求与我们在进行Web应用程序自动化的情况下的要求类似。 这是Appium所需功能在移动Web应用程序的自动浏览器测试中发挥作用的地方。
Appium测试中所需功能的示例
当请求新的自动化会话时,Appium客户端将请求与JSON对象一起发送给服务器,该JSON对象包含键和值对形式的所需功能。
使用JSON对象中的这些键和值,我们提供决定和指导appium驱动程序有关我们希望我们的移动自动化测试如何工作的方式。
然后可以在Appium服务器中设置所需功能,或者我们也可以在Webdriver测试脚本中添加所需功能。
以下是使用JSON对象进行Appium测试所需功能的示例:
{“platformName”: “Android”,“platformVersion”: “10.0”,“deviceName”: “Samsung Galaxy s10”,“automationName”: “Appium”,“app”: “path for the app under test”
}因此,在通过JSON对象进行Appium测试中使用上述期望的功能时,我们指示驱动程序使用Appium在具有给定文件位置的应用程序上在Android版本10.0的设备Samsung Galaxy s10上启动移动自动化会话。
Appium支持不同的所需功能,其中某些功能是所有平台或驱动程序共有的,而某些功能是特定于驱动程序或平台的。 在继续进行时,让我们讨论其中的一些。
Appium测试中的常规或标准所需功能
- automationName:使用此功能,我们可以指导驱动程序应该使用哪个自动化引擎。 默认情况下,它设置为Appium。 其他可用的引擎,例如Appium,Espresso(两者都适用于android),XCUITest(适用于iOS)
- platformName:我们可以使用它来指导有关iOS,Android等移动操作系统平台的信息。
- platformVersion :我们可以使用它来提及期望在其上执行测试的移动操作系统版本。
- deviceName:我们可以使用它来指定要在其上执行自动化浏览器测试的特定移动设备。 就像我们在上面的示例中使用Samsung Galaxy s10一样。
- app:此功能用于提供需要使用脚本进行测试的应用程序的路径。 在这里,我们提供带有HTTP URL的绝对本地路径或远程路径。
- browserName:当我们要在移动Web浏览器上执行测试时,可以使用此名称。 我们可以提供浏览器的名称,例如iOS的Safari,Android的Chrome等。当我们要使应用程序自动化而不使用浏览器时,可以将其保留为空。
- 语言:可用于设置Android或iOS的语言。
- newCommandTimeout:此功能有助于指示驱动程序其在结束空闲会话之前必须等待来自客户端的新命令的时间。
几乎没有其他常规功能,例如noReset,fullReset,eventTimings等。
适用于Android的Appium中所需的功能
- appActivity:使用此功能可以声明要从包中启动的Android活动的名称。 例如.MainActivity,.Settings
- appPackage:使用此功能,我们确定要执行的Android应用程序的JAva软件包。 默认情况下,程序包清单提供此功能。
例如com.example.android.testApp - appWaitActity:此功能提供了我们要等待的android活动的名称。
- appWaitPackage:这提供了我们要等待的android应用程序的java包。
- appWaitDuration:此功能用于指示等待等待的毫秒数,以启动appWaitActivity。
- deviceReadyTimeout:当驱动程序等待被测设备准备就绪时,此功能指示以秒为单位的超时时间。
除了上述android功能外,还有其他一些功能,例如adbPort,systemPort,remoteAdbHost,androidInstallPath等。
适用于iOS的Appium中所需的功能
- calendarFormat:此功能可用于设置iOS模拟器的日历格式。 例如格里高利安
- launchTimeout:此功能指示驱动程序必须等待的时间(以毫秒为单位),之后该时间将会话视为失败或挂起。
- autoAcceptAlerts; 此功能用于接受所有iOS警报,如果它们在执行自动浏览器测试时弹出。 例如:隐私访问权限警报,例如位置,联系人等。
- autoDismissAlerts:此功能用于在执行自动浏览器测试时弹出所有iOS警报时拒绝/关闭它们。 例如:隐私访问权限警报,例如位置,联系人等。
- safariInitialUrl:使用此功能,我们可以为safari浏览器设置初始URL,因此在启动浏览器时,它可以用作欢迎页面。
- appName:此功能用于显示正在测试的应用程序的名称。
除了上述iOS功能之外,safariAllowPopups, customSSLCert等还很少。
因此,我们已经看到了期望的功能,可以在使用不同浏览器,不同语言的示例创建测试时使用这些功能,并且还针对具有不同平台/操作系统的Appium进行了讨论。
LambdaTest功能生成器在Appium中提供所需的功能
LambdaTest所需功能生成器现在还提供了Appium功能。 它们可以在Appium标签下找到。 您可以在Android和iOS浏览器上进行测试,以确保您的Web应用程序能够正常运行。
我们学到了什么
在执行Selenium自动化测试时,我们需要声明一组有关测试环境的基本要求,例如特定的浏览器,操作系统等。 这可以通过Selenium测试和Appium测试的Desired Capabilities类来实现。
我们还可以指定执行测试所需的条件,例如本地托管的测试,并行测试,禁用JavaScript的测试等等。
如果您已经通过我们的“所需功能生成器”使用LambdaTest,则可以轻松生成此“所需功能”类,该生成器会根据下拉菜单中的测试要求为您提供该类。
如果您希望执行Selenium自动化测试以确保进行更广泛的浏览器兼容性测试,那么LambdaTest是所有最新浏览器,操作系统,Selenium版本的首选存储。 测试愉快! 🙂
翻译自: https://www.javacodegeeks.com/2019/12/desired-capabilities-in-selenium-testing-with-examples.html
selenium 示例