selenium 示例_Selenium测试中所需的功能和示例
selenium 示例
所需功能是用于聲明一組基本要求(例如瀏覽器,操作系統(tǒng),瀏覽器版本等的組合)的類(lèi),以對(duì)Web應(yīng)用程序執(zhí)行自動(dòng)跨瀏覽器測(cè)試。
當(dāng)我們嘗試通過(guò)Selenium自動(dòng)化測(cè)試來(lái)自動(dòng)化測(cè)試腳本時(shí),我們需要考慮這些組合,以聲明一個(gè)特定的測(cè)試環(huán)境,在該環(huán)境下,我們的網(wǎng)站或Web應(yīng)用程序應(yīng)無(wú)縫呈現(xiàn)。
這些環(huán)境可以是移動(dòng)設(shè)備,移動(dòng)瀏覽器,桌面設(shè)備,桌面瀏覽器,屏幕分辨率等。要在我們的Selenium自動(dòng)化測(cè)試腳本中聲明這些環(huán)境,我們?cè)赟elenium測(cè)試或Appium測(cè)試中使用了所需功能,這正是我們將在本文中討論。
我將幫助您熟悉Selenium測(cè)試中的所需功能和Appium的所需功能。 我將通過(guò)示例向您展示它們的含義,它們?nèi)绾斡糜赟elenium自動(dòng)化測(cè)試和Appium測(cè)試。 事不宜遲,讓我們開(kāi)始吧。
什么是所需功能?
所需功能類(lèi)是org.openqa.selenium.remote.DesiredCapabilities包的組件。 它有助于Selenium WebDriver設(shè)置瀏覽器的屬性。 因此,使用與Desired Capabilities類(lèi)不同的功能,我們可以設(shè)置瀏覽器的屬性。 例如,瀏覽器的名稱(chēng),瀏覽器的版本等。我們使用這些功能作為鍵值對(duì)來(lái)為瀏覽器設(shè)置它們。
您可以參考github庫(kù)以獲得所需的功能的所有詳細(xì)方法等。
在進(jìn)行Selenium自動(dòng)化測(cè)試時(shí),我們?cè)趫?zhí)行時(shí)總是有不同的要求,特別是要執(zhí)行哪個(gè)瀏覽器,用于測(cè)試執(zhí)行的操作系統(tǒng)和版本,這在Selenium Grid上對(duì)Desired Capabilities有很大幫助。
要在使用Grid的Selenium自動(dòng)化測(cè)試中聲明Desired Capabilities,我們可以使用DesiredCapabilities類(lèi)中的setCapability方法來(lái)設(shè)置瀏覽器的不同類(lèi)型的功能(例如Chrome,IE,Firefox,Edge)平臺(tái)名稱(chēng)(例如Windows,macOS)等)。
設(shè)置Selenium網(wǎng)格以在不同的瀏覽器中并行執(zhí)行
Appium中的所需功能對(duì)于移動(dòng)應(yīng)用程序自動(dòng)化非常有用,在這種情況下,我們必須對(duì)不同的瀏覽器屬性和設(shè)備屬性執(zhí)行測(cè)試自動(dòng)化 ,可以使用“所需功能”類(lèi)進(jìn)行設(shè)置。 為了對(duì)不同類(lèi)型的移動(dòng)設(shè)備,iOS,Android等不同類(lèi)型的移動(dòng)平臺(tái)進(jìn)行自動(dòng)化測(cè)試 。此外,可以有不同的平臺(tái)(操作系統(tǒng))版本,例如Android 9.x,10.x和iOS 12 .x,13.x等,我們可以根據(jù)需要使用Appium for Android或iOS中的“所需功能”來(lái)設(shè)置這些屬性。
Selenium和砷還有更多所需功能
通過(guò)使用Desired Capabilities類(lèi),我們向WebDriver指示了有關(guān)環(huán)境,例如瀏覽器名稱(chēng),瀏覽器版本,平臺(tái)等,我們將使用自動(dòng)化腳本在該環(huán)境上執(zhí)行自動(dòng)化瀏覽器測(cè)試 。 但這不是我們使用Desired Capabilities類(lèi)所能做的。 我們還可以配置特定于瀏覽器的首選項(xiàng),例如啟用chrome選項(xiàng),firefox選項(xiàng),使用隱身模式進(jìn)行測(cè)試,甚至禁用javascript等。
使用禁用JavaScript設(shè)置進(jìn)行Selenium自動(dòng)化測(cè)試
如果您使用的是基于云的在線Selenium網(wǎng)格 ,那么Desired Capabilities類(lèi)也可以用于與Selenium或Appium進(jìn)行并行測(cè)試,使用Selenium 測(cè)試本地托管的Web應(yīng)用程序 ,生成按命令的屏幕截圖,甚至是視頻通過(guò)不同的瀏覽器和OS配置記錄整個(gè)測(cè)試自動(dòng)化執(zhí)行情況。
所需功能類(lèi)型的方法
現(xiàn)在,讓我們討論所需功能類(lèi)中可用的不同方法,以在測(cè)試自動(dòng)化中設(shè)置不同的屬性。
public java.lang.Object getCapability(java.lang.String capabilityName)類(lèi)Desired Capabilities中的getCapability()方法,該方法可用于獲取我們正在使用的當(dāng)前系統(tǒng)的功能。
public java.lang.Object getCapability(java.lang.String capabilityName)該類(lèi)來(lái)自Desired Capabilities的setCapability()方法可用于設(shè)置設(shè)備名稱(chēng),平臺(tái)名稱(chēng),平臺(tái)版本,被測(cè)應(yīng)用程序的絕對(duì)路徑,應(yīng)用程序活動(dòng)(在移動(dòng)自動(dòng)化中),應(yīng)用程序包( Java)等
public java.lang.String getBrowserName()類(lèi)Desired Capabilities中的getBrowserName()方法可用于獲取瀏覽器的名稱(chēng)。
public void setBrowserName(java.lang.String browserName)類(lèi)Desired Capabilities中的setBrowserName()方法可用于設(shè)置瀏覽器的名稱(chēng)。
public java.lang.String getVersion()類(lèi)Desired Capabilities中的getVersion()方法可用于獲取瀏覽器或平臺(tái)的版本。
public void setVersion(java.lang.String version)類(lèi)Desired Capabilities中的setVersion()方法可用于設(shè)置瀏覽器或平臺(tái)的版本。
public Platform getPlatform()類(lèi)Desired Capabilities中的getPlatform()方法可用于獲取平臺(tái)的詳細(xì)信息。
public Platform setPlatform()類(lèi)Desired Capabilities中的setPlatform()方法可用于設(shè)置平臺(tái)的詳細(xì)信息。
有關(guān)更多信息,您可以參考Selenium文檔 。
針對(duì)不同瀏覽器進(jìn)行Selenium測(cè)試所需的功能
在上一節(jié)中,我們看到了所需功能類(lèi)的不同方法。 現(xiàn)在,讓我們討論如何為不同的瀏覽器設(shè)置不同的功能。
Selenium WebDriver for Chrome中所需的功能
當(dāng)我們要自定義和配置Selenium WebDriver for Chrome中的所需功能時(shí),我們需要調(diào)用ChromeDriver會(huì)話以利用這些功能。 因此,讓我們討論ChromeDriver支持的功能,以及如何使用它們?cè)赟elenium Webdriver for Chrome中設(shè)置所需的功能。
有兩種方法可以設(shè)置ChromeDriver的功能。
1. ChromeOptions
2.所需功能
ChromeOptions是另一類(lèi),可以與Selenium WebDriver for Chrome中的所需功能結(jié)合使用,以自定義或操作Chrome瀏覽器的各種屬性。
以下是ChromeOptions類(lèi)的常用參數(shù)
Disable-infobars:用于阻止chrome瀏覽器顯示諸如“ Chrome正在由自動(dòng)化軟件控制”之類(lèi)的通知。
Make-default-browser:用于將chrome瀏覽器設(shè)置為默認(rèn)瀏覽器。
Disable-popup-blocking:禁用chrome瀏覽器中顯示的彈出窗口。
隱身模式:以隱身模式打開(kāi)Chrome瀏覽器
start -maximized:以最大化模式打開(kāi)Chrome瀏覽器
無(wú)頭:用于以無(wú)頭模式打開(kāi)Chrome瀏覽器。
現(xiàn)在,讓我們討論一個(gè)廣告攔截器的示例,其中將Chrome Option與Desired Capabilities類(lèi)結(jié)合使用。 為此,我們將使用adblocker擴(kuò)展程序。
前提條件是應(yīng)下載擴(kuò)展名的crx文件 。
Selenium WebDriver for Firefox中所需的功能
就像我們?cè)贑hrome瀏覽器中看到的那樣,還有一些方法可以自定義Firefox瀏覽器的Selenium WebDriver中的所需功能。
moz:firefoxOptions功能專(zhuān)門(mén)用于Firefox瀏覽器。 我們可以使用moz:firefoxOptions來(lái)自定義或操縱Firefox瀏覽器的不同屬性,這有助于我們控制Firefox瀏覽器的行為。 它通常作為兩者之一的成員被調(diào)用,一個(gè)來(lái)自alwaysMatch ,另一個(gè)來(lái)自firstMatch條目。
moz:firefoxOptions可以包含以下內(nèi)容,這些內(nèi)容可以控制Firefox瀏覽器的啟動(dòng)或運(yùn)行方式。
a)binary(String):我們提供供自定義Firefox二進(jìn)制文件使用的絕對(duì)路徑。 通常,GeckoDriver(我們用于Firefox的驅(qū)動(dòng)程序)會(huì)嘗試查找Firefox在當(dāng)前系統(tǒng)上的位置(如果未定義)。
b)args(字符串?dāng)?shù)組):此參數(shù)用于將命令行參數(shù)傳遞給Firefox二進(jìn)制文件。 使用此語(yǔ)法時(shí),應(yīng)包含連字符/連字符,例如[“ -profile”]。
因此,要通過(guò)GeckoDriver提取現(xiàn)有配置文件,我們應(yīng)該使用如下語(yǔ)法
[“-個(gè)人資料”,“個(gè)人資料的路徑”]
c)profile(string):我們可以提供目錄的路徑,以便可以使用Firefox實(shí)例。 要安裝某些firefox擴(kuò)展名或某些自定義證書(shū),我們可以使用它。 雖然建議在我們要設(shè)置自定義首選項(xiàng)的同時(shí)使用首選項(xiàng),而不要直接傳遞配置文件。 您可以在下面找到其他偏好的示例。
這是在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中所需的功能
現(xiàn)在,讓我們繼續(xù)進(jìn)行Selenium WebDriver for IE(Internet Explorer)中的所需功能。 對(duì)于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); }我們幾乎沒(méi)有可以使用的Internet Explorer特定功能,讓我們一一討論。
a)ignoreZoomSetting(boolean):此功能可用于忽略對(duì)瀏覽器的縮放級(jí)別達(dá)到100%的檢查。 默認(rèn)情況下,它設(shè)置為false。 它需要一個(gè)布爾值作為輸入。
b)initialBrowserUrl(string):使用此功能,我們可以確定初始URL,即Internet Explorer瀏覽器啟動(dòng)時(shí)應(yīng)重定向到的初始URL。 它以字符串作為輸入。
c)enableElementCacheCleanup(boolean):此功能提供對(duì)元素緩存中過(guò)時(shí)元素的檢查。 如果找到它們,該功能將指示W(wǎng)ebDriver進(jìn)行清理。 它需要一個(gè)布爾值作為輸入。
d)requireWindowFocus(boolean):此功能用于指示驅(qū)動(dòng)程序在執(zhí)行任何操作(如鼠標(biāo)或鍵盤(pán)事件等)之前檢查Internet Explorer窗口是否具有焦點(diǎn)。它采用布爾值作為輸入,默認(rèn)情況下,它是設(shè)為假。
e)ignoreProtectedModeSettings(boolean):如果您希望在執(zhí)行Selenium自動(dòng)化測(cè)試時(shí)跳過(guò)保護(hù)模式檢查,則可以利用此功能。 它需要一個(gè)布爾值作為輸入。
因此,這些是我們可以使用的某些Internet Explorer特定功能。
不同語(yǔ)言的Selenium測(cè)試中所需功能的示例
現(xiàn)在,我將向您演示如何在使用不同語(yǔ)言的Selenium測(cè)試中利用所需功能。 您可能已經(jīng)知道,Selenium自動(dòng)化測(cè)試受多種編程語(yǔ)言支持。 它為每種主要編程語(yǔ)言(例如JavaScript,C#,Python,Java,Ruby,PHP)提供綁定。 為了讓您了解如何在Selenium測(cè)試中利用所需的功能,我將提供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設(shè)置Selenium功能
Lambdatest是基于云的跨瀏覽器測(cè)試工具,可讓您在包含2000多種實(shí)際瀏覽器的在線Selenium Grid上執(zhí)行Selenium自動(dòng)化測(cè)試。 Selenium支持的所有語(yǔ)言和框架都與LambdaTest兼容。
您還將獲得與眾多第三方CI / CD工具,項(xiàng)目管理工具,協(xié)作工具等的集成。
作為在線Selenium Grid即服務(wù)提供商,我們了解DesiredCapabilities在您的Selenium自動(dòng)化測(cè)試體驗(yàn)中的重要性。 我們還了解到,每次要在數(shù)百種瀏覽器和操作系統(tǒng)組合上運(yùn)行測(cè)試時(shí),寫(xiě)下您所需的功能可能要花費(fèi)大量時(shí)間。 這就是為什么我們會(huì)提供一個(gè)在線DesiredCapabilities Generator的原因 ,該發(fā)生器根據(jù)您的點(diǎn)擊選擇為您提供多種編程語(yǔ)言的DesiredCapabilities類(lèi)。
因此,當(dāng)我們使用上述URL從LambdaTest導(dǎo)航至功能生成器時(shí),您將看到如下屏幕
正如我們?cè)谏厦娴钠聊唤貓D中看到的那樣,我們可以選擇我們要在測(cè)試腳本中使用的屬性,并在選擇所需的信息后生成所需的功能。
以下屏幕顯示了生成的功能,我們可以在測(cè)試腳本中直接使用這些功能。
您是否注意到我們?cè)赟elenium 4中使用了所需功能? 如果看上面的圖片,您會(huì)發(fā)現(xiàn)在Selenium 4標(biāo)簽下的下拉菜單中進(jìn)行了點(diǎn)擊選擇。
LambdaTest功能生成器上的Selenium 4所需功能
使用LambdaTest作為在線Selenium Grid的另一個(gè)巨大好處。 您將獲得最新的瀏覽器,瀏覽器版本以及在我們的云服務(wù)器上托管的計(jì)算機(jī)上預(yù)安裝的操作系統(tǒng)。 那還不是全部! 您還將獲得最新的Selenium 4所需功能,所有這些功能都可以在您的自動(dòng)瀏覽器測(cè)試腳本中啟動(dòng)。
在Selenium測(cè)試中結(jié)合了所需功能的示例腳本
現(xiàn)在,讓我們舉一個(gè)簡(jiǎn)單的例子來(lái)演示如何在Selenium自動(dòng)化測(cè)試腳本中適合這些所需的功能。 因此,當(dāng)我們準(zhǔn)備好生成所需的所需功能時(shí),我們已在以下測(cè)試腳本中使用了該腳本,該腳本可在多個(gè)瀏覽器上執(zhí)行,以使用LambdaTest提供的Selenium Grid在2000多種真實(shí)瀏覽器上執(zhí)行跨瀏覽器測(cè)試。
自動(dòng)化腳本示例:
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自動(dòng)化儀表板上的輸出
在LambdaTest的在線Selenium Grid上執(zhí)行上述腳本后,我們通過(guò)LambdaTest上的自動(dòng)化儀表板獲得以下自動(dòng)化日志。 您會(huì)在自動(dòng)化儀表盤(pán)下獲得不同類(lèi)型的日志,例如網(wǎng)絡(luò)日志,命令日志,元數(shù)據(jù),視頻記錄,屏幕截圖等。在下面的屏幕截圖中,我希望您關(guān)注LambdaTest提供的原始Selenium日志。
您會(huì)注意到自動(dòng)化腳本中聲明的功能在那里顯示。
Appium中用于移動(dòng)自動(dòng)化的所需功能
到現(xiàn)在為止,我們已經(jīng)看到了期望的功能,這些功能具有不同的語(yǔ)言,瀏覽器和可用的不同方法。 我希望到目前為止,您對(duì)如何在Selenium自動(dòng)化測(cè)試中使用所需功能有了一個(gè)好主意。 但是,Selenium自動(dòng)化測(cè)試只能確保您的Web應(yīng)用程序可用于臺(tái)式設(shè)備,但客戶(hù)可能會(huì)使用其移動(dòng)設(shè)備來(lái)訪問(wèn)您的Web應(yīng)用程序或網(wǎng)站,尤其是您的博客頁(yè)面。
我們生活在移動(dòng)優(yōu)先時(shí)代。 僅在桌面上進(jìn)行自動(dòng)瀏覽器測(cè)試不能確保您的網(wǎng)站與跨瀏覽器兼容 。 幾乎每個(gè)企業(yè)都在向數(shù)字化發(fā)展,因此它要求網(wǎng)站或Web應(yīng)用程序同時(shí)支持臺(tái)式機(jī)和移動(dòng)設(shè)備。 這意味著您可能還必須通過(guò)移動(dòng)瀏覽器執(zhí)行自動(dòng)瀏覽器測(cè)試!
那么,我們?nèi)绾螢橐苿?dòng)瀏覽器執(zhí)行自動(dòng)瀏覽器測(cè)試? 好消息是,還有另一個(gè)引人注目的開(kāi)源框架可以幫助您實(shí)現(xiàn)這一目的,它被稱(chēng)為Appium。
現(xiàn)在,我們將討論Appium測(cè)試,以及如何在Appium中使用所需的功能。
因此,對(duì)平臺(tái)或操作系統(tǒng)(例如Android,iOS),平臺(tái)版本,設(shè)備等可能會(huì)有不同的要求,這些要求與我們?cè)谶M(jìn)行Web應(yīng)用程序自動(dòng)化的情況下的要求類(lèi)似。 這是Appium所需功能在移動(dòng)Web應(yīng)用程序的自動(dòng)瀏覽器測(cè)試中發(fā)揮作用的地方。
Appium測(cè)試中所需功能的示例
當(dāng)請(qǐng)求新的自動(dòng)化會(huì)話時(shí),Appium客戶(hù)端將請(qǐng)求與JSON對(duì)象一起發(fā)送給服務(wù)器,該JSON對(duì)象包含鍵和值對(duì)形式的所需功能。
使用JSON對(duì)象中的這些鍵和值,我們提供決定和指導(dǎo)appium驅(qū)動(dòng)程序有關(guān)我們希望我們的移動(dòng)自動(dòng)化測(cè)試如何工作的方式。
然后可以在Appium服務(wù)器中設(shè)置所需功能,或者我們也可以在Webdriver測(cè)試腳本中添加所需功能。
以下是使用JSON對(duì)象進(jìn)行Appium測(cè)試所需功能的示例:
{“platformName”: “Android”,“platformVersion”: “10.0”,“deviceName”: “Samsung Galaxy s10”,“automationName”: “Appium”,“app”: “path for the app under test” }因此,在通過(guò)JSON對(duì)象進(jìn)行Appium測(cè)試中使用上述期望的功能時(shí),我們指示驅(qū)動(dòng)程序使用Appium在具有給定文件位置的應(yīng)用程序上在Android版本10.0的設(shè)備Samsung Galaxy s10上啟動(dòng)移動(dòng)自動(dòng)化會(huì)話。
Appium支持不同的所需功能,其中某些功能是所有平臺(tái)或驅(qū)動(dòng)程序共有的,而某些功能是特定于驅(qū)動(dòng)程序或平臺(tái)的。 在繼續(xù)進(jìn)行時(shí),讓我們討論其中的一些。
Appium測(cè)試中的常規(guī)或標(biāo)準(zhǔn)所需功能
幾乎沒(méi)有其他常規(guī)功能,例如noReset,fullReset,eventTimings等。
適用于Android的Appium中所需的功能
例如com.example.android.testApp
除了上述android功能外,還有其他一些功能,例如adbPort,systemPort,remoteAdbHost,androidInstallPath等。
適用于iOS的Appium中所需的功能
除了上述iOS功能之外,safariAllowPopups, customSSLCert等還很少。
因此,我們已經(jīng)看到了期望的功能,可以在使用不同瀏覽器,不同語(yǔ)言的示例創(chuàng)建測(cè)試時(shí)使用這些功能,并且還針對(duì)具有不同平臺(tái)/操作系統(tǒng)的Ap??pium進(jìn)行了討論。
LambdaTest功能生成器在Appium中提供所需的功能
LambdaTest所需功能生成器現(xiàn)在還提供了Appium功能。 它們可以在Appium標(biāo)簽下找到。 您可以在Android和iOS瀏覽器上進(jìn)行測(cè)試,以確保您的Web應(yīng)用程序能夠正常運(yùn)行。
我們學(xué)到了什么
在執(zhí)行Selenium自動(dòng)化測(cè)試時(shí),我們需要聲明一組有關(guān)測(cè)試環(huán)境的基本要求,例如特定的瀏覽器,操作系統(tǒng)等。 這可以通過(guò)Selenium測(cè)試和Appium測(cè)試的Desired Capabilities類(lèi)來(lái)實(shí)現(xiàn)。
我們還可以指定執(zhí)行測(cè)試所需的條件,例如本地托管的測(cè)試,并行測(cè)試,禁用JavaScript的測(cè)試等等。
如果您已經(jīng)通過(guò)我們的“所需功能生成器”使用LambdaTest,則可以輕松生成此“所需功能”類(lèi),該生成器會(huì)根據(jù)下拉菜單中的測(cè)試要求為您提供該類(lèi)。
如果您希望執(zhí)行Selenium自動(dòng)化測(cè)試以確保進(jìn)行更廣泛的瀏覽器兼容性測(cè)試,那么LambdaTest是所有最新瀏覽器,操作系統(tǒng),Selenium版本的首選存儲(chǔ)。 測(cè)試愉快! 🙂
翻譯自: https://www.javacodegeeks.com/2019/12/desired-capabilities-in-selenium-testing-with-examples.html
selenium 示例
總結(jié)
以上是生活随笔為你收集整理的selenium 示例_Selenium测试中所需的功能和示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 压缩卷什么意思 压缩卷的含义
- 下一篇: apache.camel_Apache