selenium 示例_Selenium测试中所需的功能和示例

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测试中的常规或标准所需功能

  1. automationName:使用此功能,我们可以指导驱动程序应该使用哪个自动化引擎。 默认情况下,它设置为Appium。 其他可用的引擎,例如Appium,Espresso(两者都适用于android),XCUITest(适用于iOS)
  2. platformName:我们可以使用它来指导有关iOS,Android等移动操作系统平台的信息。
  3. platformVersion :我们可以使用它来提及期望在其上执行测试的移动操作系统版本。
  4. deviceName:我们可以使用它来指定要在其上执行自动化浏览器测试的特定移动设备。 就像我们在上面的示例中使用Samsung Galaxy s10一样。
  5. app:此功能用于提供需要使用脚本进行测试的应用程序的路径。 在这里,我们提供带有HTTP URL的绝对本地路径或远程路径。
  6. browserName:当我们要在移动Web浏览器上执行测试时,可以使用此名称。 我们可以提供浏览器的名称,例如iOS的Safari,Android的Chrome等。当我们要使应用程序自动化而不使用浏览器时,可以将其保留为空。
  7. 语言:可用于设置Android或iOS的语言。
  8. newCommandTimeout:此功能有助于指示驱动程序其在结束空闲会话之前必须等待来自客户端的新命令的时间。

几乎没有其他常规功能,例如noReset,fullReset,eventTimings等。

适用于Android的Appium中所需的功能

  1. appActivity:使用此功能可以声明要从包中启动的Android活动的名称。 例如.MainActivity,.Settings
  2. appPackage:使用此功能,我们确定要执行的Android应用程序的JAva软件包。 默认情况下,程序包清单提供此功能。
    例如com.example.android.testApp
  3. appWaitActity:此功能提供了我们要等待的android活动的名称。
  4. appWaitPackage:这提供了我们要等待的android应用程序的java包。
  5. appWaitDuration:此功能用于指示等待等待的毫秒数,以启动appWaitActivity。
  6. deviceReadyTimeout:当驱动程序等待被测设备准备就绪时,此功能指示以秒为单位的超时时间。

除了上述android功能外,还有其他一些功能,例如adbPort,systemPort,remoteAdbHost,androidInstallPath等。

适用于iOS的Appium中所需的功能

  1. calendarFormat:此功能可用于设置iOS模拟器的日历格式。 例如格里高利安
  2. launchTimeout:此功能指示驱动程序必须等待的时间(以毫秒为单位),之后该时间将会话视为失败或挂起。
  3. autoAcceptAlerts; 此功能用于接受所有iOS警报,如果它们在执行自动浏览器测试时弹出。 例如:隐私访问权限警报,例如位置,联系人等。
  4. autoDismissAlerts:此功能用于在执行自动浏览器测试时弹出所有iOS警报时拒绝/关闭它们。 例如:隐私访问权限警报,例如位置,联系人等。
  5. safariInitialUrl:使用此功能,我们可以为safari浏览器设置初始URL,因此在启动浏览器时,它可以用作欢迎页面。
  6. appName:此功能用于显示正在测试的应用程序的名称。

除了上述iOS功能之外,safariAllowPopups, customSSLCert等还很少。

因此,我们已经看到了期望的功能,可以在使用不同浏览器,不同语言的示例创建测试时使用这些功能,并且还针对具有不同平台/操作系统的Ap​​pium进行了讨论。

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 示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java流与文件——正则表达式

【0】README 0.1&#xff09; 本文描述转自 core java volume 2&#xff0c; 旨在理解 java流与文件——正则表达式 的相关知识&#xff1b; 0.2&#xff09; there are my original source code below, and for them , please visit https://github.com/pacosonTang/core-ja…

pandoc讲html转换为pdf,mac下利用Pandoc、LaTeX 转换markdown成html,pdf

环境所使用的插件有pandoc,tlmgr,fc-listcssbrew install pandoc由于mac ox 系统生成pdf 须要找到对应的编码集 全部还须要去下载LaTeX&#xff0c;进行安装html5使用tlmgr工具安装全部要的包先进行更新&#xff0c;若是提示所须要的字体没有找到安装gitsudo tlmgr update --se…

java程序连接kafka_Java的Kafka:构建安全,可扩展的消息传递应用程序

java程序连接kafka使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 今天尝试Okta。 当今的用户希望可以通过其计算机&#xff0c;手机&#xff0c;平板电脑或任何其他设备访问您的应用…

信息系html5论文,基于HTML5的智力游戏设计电子信息工程本科学生毕业论文.doc

基于HTML5的智力游戏设计电子信息工程本科学生毕业论文本科学生毕业论文(设计)题目(中文)&#xff1a;基于HTML5的智力游戏设计(英文)&#xff1a;Design of Intelligent Game Based on HTML5姓 名 xxx学 号 xxx院 (系) 电子与信息工程学院专业、年级 电子信息工程指导教师 xxx…

优先队列——左式堆

【0】README 0.1&#xff09; 本文文字描述部分转自 数据结构与算法分析&#xff0c; 旨在理解 优先队列——左式堆 的基础知识&#xff1b; 0.2&#xff09; 本文核心思路均为原创&#xff0c; 源代码部分借鉴 数据结构与算法分析 &#xff1b; 0.3&#xff09; for origin…

Class类中的getEnclosing*、getDeclared*与getDeclaringClass的区别

一、getEnclosing* 当前类在……中闭合Class<?>getEnclosingClass() 返回底层类的立即封闭类。 Constructor<?>getEnclosingConstructor() 如果该 Class 对象表示构造方法中的一个本地或匿名类&#xff0c;则返回 Constructor 对象&#xf…

java联接pg库_Java14:使用Java 14的新记录联接数据库表

java联接pg库您是否知道可以使用Java 14的预览记录功能将数据库表连接到Java Stream中&#xff1f; 阅读这篇简短的文章&#xff0c;并了解如何使用Speedment Stream ORM完成它。 我们将从如何设置您的项目开始。 建立 下载Java 14 。 转到Speedment Initializer并下载您的项目…

html5遍历集合数据,HTMLCollection集合能打印出来值,但是无法获取每一个值。

var imgs $("#pictureQueryTable img").prevObject[0].images;下图是上面这句打印出来的结果&#xff1a;console.log可以打印出来该集合的数据&#xff0c;但是无法获取该集合中的每一个值&#xff0c;打印该集合的length为0&#xff0c;所以也无法遍历该集合进行操…

优先队列——斜堆

【0】README 0.1&#xff09;本文部分内容转自  http://www.cnblogs.com/skywang12345/p/3638493.html&#xff0c; 旨在理解 优先队列——斜堆 的基础知识&#xff1b; 0.2&#xff09; for original source code , please visit https://github.com/pacosonTang/dataStruc…

Class的getResource与ClassLoader的getResource路径/问题

一、Class的getResource(String path)&#xff1a;URL 1、path 不以’/开头时&#xff0c;默认是从此类所在的包下取资源&#xff1b; 2、path 以’/开头时&#xff0c;则是从ClassPath根下获取&#xff1b; System.out.println(Test.class.getResource("")); Syste…

java 轻量级文件数据库_Java:如何创建轻量级数据库微服务

java 轻量级文件数据库基于云的Java数据库应用程序的数量每分钟都在增加。 许多组织部署了数百甚至数千个微服务实例。 但是&#xff0c;相对于运行时环境&#xff0c;大多数应用程序会带来惊人的不必要开销。 反过来&#xff0c;这会使应用程序运行更慢&#xff0c;运行成本更…

html中显示shell脚本的输出,网页从shell脚本中输入并显示结果

首先&#xff0c;不是在BASH脚本中使用$USERNAME。 $USERNAME是一个包含当前用户名的BASH变量。实际上&#xff0c;在BASH中使用UPPERCASE变量通常是一个糟糕的主意。大多数BASH环境变量都是大写字母&#xff0c;可能会导致混淆。让你的变量小写是个好习惯。此外&#xff0c;因…

优先队列——二项队列(binominal queue)

【0】README 0.1&#xff09; 本文文字描述部分转自 数据结构与算法分析&#xff0c; 旨在理解 优先队列——二项队列&#xff08;binominal queue&#xff09; 的基础知识&#xff1b; 0.2&#xff09; 本文核心的剖析思路均为原创&#xff08;insert&#xff0c;merge和del…

Class的getName、getSimpleName与getCanonicalName的区别

一、getName 除了数组外&#xff0c;其他的类都是输出类全名以 String 的形式返回此 Class 对象所表示的实体&#xff08;类、接口、数组类、基本类型或 void&#xff09;名称。 1、此类对象表示的是非数组类型的引用类型&#xff0c; 返回该类的二进制名称&#xff0c;Java…

apache.camel_Apache Camel 3.1 –即将推出更多骆驼核心优化

apache.camel希望一切都很好&#xff0c;您可以安全进入2020年。 Camel团队已经在忙于开发下一个Camel 3.1版本。 目标之一是继续优化骆驼核心&#xff0c;这一次我们花了一些时间来寻找路由引擎中的一些热点。 我们所研究的方面之一也是在Camel路由的每个消息中发生的对象分…

xp系统的计算机管理中用户在哪里,WINDOWSXP的用户管理和系统安全设置

台计算机)⑤回到“添加独立管理单元”对话框&#xff0c;单击“关闭”&#xff0c;回到““控制台->添加/删除管理单元”对话框&#xff0c;再单击“确定”&#xff1b;⑥此时&#xff0c;在控制台窗口左窗格中看到新添加的控制单元“本地计算机策略”&#xff1b;⑦依次展开…

XML——StAX Streaming API for XML(read+write)

【0】README 0.1&#xff09; reshipping from http://www.journaldev.com/1191/how-to-read-xml-file-in-java-using-java-stax-api http://www.journaldev.com/892/how-to-write-xml-file-in-java-using-java-stax-api 0.2&#xff09; for all source code , please visi…

Class的getInterfaces与getGenericInterface区别

一、getInterfaces 返回直接实现的接口&#xff08; 由于编译擦除&#xff0c;没有显示泛型参数&#xff09; Class<?>[] getInterfaces() 确定此对象所表示的类或接口实现的接口。 确定此对象所表示的类或接口实现的接口。 如果此对象表示一个类&am…

maven配置junit5_JUnit 5和Selenium –改善项目配置

maven配置junit5Selenium是一组支持浏览器自动化的工具和库&#xff0c;主要用于Web应用程序测试。 Selenium的组件之一是Selenium WebDriver&#xff0c;它提供客户端库&#xff0c;JSON有线协议&#xff08;与浏览器驱动程序进行通信的协议&#xff09;和浏览器驱动程序。 Se…

形容计算机网络教室的成语,形容教育的成语

形容教育的成语形容教育的成语【不教而杀】 【弦歌之声】 【化及冥顽】 【蒙以养正】【不言之教】 【沂水春风】 【嘉言善状】 【神道设教】【不教之教】 【相夫教子】 【画荻教子】 【磨昏抉聩】【东风化雨】 【因材施教】 【教无常师】 【脱骨换胎】…