Best Selenium code snippet using org.openqa.selenium.firefox.Enum FirefoxDriverLogLevel
Source:DriverFactory.java  
1package com.maveric.core.driver;2import com.maveric.core.config.ConfigProperties;3import io.appium.java_client.android.AndroidDriver;4import io.appium.java_client.ios.IOSDriver;5import io.github.bonigarcia.wdm.WebDriverManager;6import io.github.bonigarcia.wdm.config.DriverManagerType;7import org.apache.logging.log4j.LogManager;8import org.apache.logging.log4j.Logger;9import org.openqa.selenium.WebDriver;10import org.openqa.selenium.chrome.ChromeDriver;11import org.openqa.selenium.chrome.ChromeOptions;12import org.openqa.selenium.edge.EdgeDriver;13import org.openqa.selenium.edge.EdgeOptions;14import org.openqa.selenium.firefox.FirefoxDriver;15import org.openqa.selenium.firefox.FirefoxDriverLogLevel;16import org.openqa.selenium.firefox.FirefoxOptions;17import org.openqa.selenium.ie.InternetExplorerDriver;18import org.openqa.selenium.ie.InternetExplorerOptions;19import org.openqa.selenium.remote.CapabilityType;20import org.openqa.selenium.remote.DesiredCapabilities;21import org.openqa.selenium.remote.RemoteWebDriver;22import org.openqa.selenium.safari.SafariDriver;23import org.openqa.selenium.safari.SafariOptions;24import java.net.MalformedURLException;25import java.net.URL;26import java.util.HashMap;27public class DriverFactory {28    public static final Logger logger = LogManager.getLogger();29    public static final String OS = System.getProperty("os.name").toLowerCase();30    public enum Browser {31        firefox, chrome, edge, iexplorer, safari32    }33    public enum RemoteGrid {34        sauce, browserstack, grid35    }36    public enum Platform {37        windows, macos, ios, android, linux38    }39    public void driverSetup() {40        Browser browser = getBrowser();41        if (isRemote()) {42            createRemoteDriver();43        } else {44            Driver.setWebDriver(createDriver(browser));45        }46    }47    public WebDriver createDriver(Browser browser) {48        switch (browser) {49            case firefox:50                return getFirefoxDriver();51            case chrome:52                return getChromeDriver();53            case edge:54                return getEdgeDriver();55            case iexplorer:56                return getIEDriver();57            case safari:58                return getSafariDriver();59            default:60                throw new RuntimeException("Invalid Browser");61        }62    }63    private WebDriver getSafariDriver() {64        SafariOptions safariOptions = new SafariOptions();65        safariOptions.setCapability("safari.cleanSession", true);66        return new SafariDriver(safariOptions);67    }68    private WebDriver getIEDriver() {69        InternetExplorerOptions ieOptions = new InternetExplorerOptions();70        ieOptions.setCapability(CapabilityType.ForSeleniumServer.ENSURING_CLEAN_SESSION, true);71        ieOptions.setCapability(InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING, true);72        ieOptions.setCapability("requireWindowFocus", true);73        ieOptions.takeFullPageScreenshot();74        ieOptions.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);75        ieOptions.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);76        ieOptions.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, false);77        ieOptions.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, true);78        ieOptions.setCapability("ignoreProtectedModeSettings", true);79        return new InternetExplorerDriver(ieOptions);80    }81    private WebDriver getEdgeDriver() {82        EdgeOptions edgeOptions = new EdgeOptions();83        return new EdgeDriver(edgeOptions);84    }85    private WebDriver getChromeDriver() {86        ChromeOptions chromeOptions = new ChromeOptions();87        chromeOptions.setHeadless(ConfigProperties.HEADLESS.getBoolean());88        if (OS.contains("nix") || OS.contains("nux")89                || OS.contains("aix")) {90            chromeOptions.addArguments("--disable-extensions");91            chromeOptions.addArguments("--disable-gpu");92            chromeOptions.addArguments("--disable-dev-shm-usage");93            chromeOptions.addArguments("--no-sandbox");94        }95        if (!ConfigProperties.CHROME_DEVICE.get().isEmpty()) {96            chromeOptions.setExperimentalOption(97                    "mobileEmulation", new HashMap<String, Object>() {{98                        put("deviceName", ConfigProperties.CHROME_DEVICE.get());99                    }});100        }101        return new ChromeDriver(chromeOptions);102    }103    private WebDriver getFirefoxDriver() {104        FirefoxOptions firefoxOptions = new FirefoxOptions();105        firefoxOptions.setHeadless(ConfigProperties.HEADLESS.getBoolean());106        firefoxOptions.setLogLevel(FirefoxDriverLogLevel.INFO);107        return new FirefoxDriver(firefoxOptions);108    }109    public void createRemoteDriver() {110        try {111            DesiredCapabilities caps = new DesiredCapabilities();112            RemoteCapabilities remoteCaps = new RemoteCapabilities(getPlatform(), getBrowser());113            URL remoteURL;114            switch (getRemoteType()) {115                case browserstack:116                    caps.merge(remoteCaps.getBrowserstackCapabilities());117                    remoteURL = getBrowserStackURL();118                    break;119                case sauce:120                    caps.merge(remoteCaps.getSauceCapabilities());121                    remoteURL = getSauceURL();122                    logger.info("sauce");123                    break;124                case grid:125                    caps.merge(remoteCaps.getGridCapabilities());126                    remoteURL = getGridURL();127                    break;128                default:129                    throw new RuntimeException("Invalid Remote Type");130            }131            caps.asMap().forEach((key, value) -> logger.info(key + " : " + value));132            boolean isNative = false;133            Object appCap = caps.getCapability("app");134            if (appCap != null && !(appCap.toString().isEmpty())) {135                isNative = true;136            }137            switch (getPlatform()) {138                case ios:139                    if (isNative)140                        Driver.setAppiumDriver(new IOSDriver<>(remoteURL, caps));141                    else142                        Driver.setWebDriver(new RemoteWebDriver(remoteURL, caps));143                    break;144                case android:145                    if (isNative)146                        Driver.setAppiumDriver(new AndroidDriver<>(remoteURL, caps));147                    else148                        Driver.setWebDriver(new RemoteWebDriver(remoteURL, caps));149                    break;150                case macos:151                case windows:152                case linux:153                    Driver.setWebDriver(new RemoteWebDriver(remoteURL, caps));154                    break;155            }156        } catch (Exception e) {157            e.printStackTrace();158        }159    }160    private RemoteGrid getRemoteType() {161        if (ConfigProperties.BROWSER_STACK.getBoolean()) {162            return RemoteGrid.browserstack;163        } else if (ConfigProperties.SAUCE.getBoolean()) {164            return RemoteGrid.sauce;165        } else {166            return RemoteGrid.grid;167        }168    }169    public boolean isRemote() {170        return (!ConfigProperties.GRID_URL.get().isEmpty())171                || ConfigProperties.SAUCE.getBoolean()172                || ConfigProperties.BROWSER_STACK.getBoolean();173    }174    private static URL getGridURL() {175        try {176            return new URL(ConfigProperties.GRID_URL.get());177        } catch (MalformedURLException e) {178            e.printStackTrace();179        }180        return null;181    }182    private static URL getBrowserStackURL() {183        try {184            String url = String.format("https://%s:%s@%s",185                    ConfigProperties.BROWSER_STACK_USERNAME.get(),186                    ConfigProperties.BROWSER_STACK_ACCESS_KEY.get(),187                    ConfigProperties.BROWSER_STACK_HUB.get());188            return new URL(url);189        } catch (MalformedURLException e) {190            e.printStackTrace();191        }192        return null;193    }194    private static URL getSauceURL() {195        try {196            String url = String.format(197                    "https://%s:%s@%s",198                    ConfigProperties.SAUCE_USERNAME.get(),199                    ConfigProperties.SAUCE_ACCESS_KEY.get(),200                    ConfigProperties.SAUCE_HUB.get());201            return new URL(url);202        } catch (MalformedURLException e) {203            e.printStackTrace();204        }205        return null;206    }207    private Platform getPlatform() {208        if (!ConfigProperties.PLATFORM.get().isEmpty()) {209            return Platform.valueOf(ConfigProperties.PLATFORM.get());210        } else {211            throw new RuntimeException("Invalid platform Type");212        }213    }214    public Browser getBrowser() {215        return Browser.valueOf(ConfigProperties.BROWSER.get());216    }217    public static void downloadDriver() {218        String browser_ = Browser.valueOf(ConfigProperties.BROWSER.get()).toString();219        if (!(browser_.equalsIgnoreCase("safari"))) {220            WebDriverManager.getInstance(DriverManagerType.valueOf(browser_.toUpperCase())).setup();221        }222    }223}...Source:Browsers.java  
1package io.github.burakkaygusuz.config;2import org.openqa.selenium.PageLoadStrategy;3import org.openqa.selenium.chrome.ChromeDriverService;4import org.openqa.selenium.chrome.ChromeOptions;5import org.openqa.selenium.firefox.FirefoxDriver;6import org.openqa.selenium.firefox.FirefoxDriverLogLevel;7import org.openqa.selenium.firefox.FirefoxOptions;8import org.openqa.selenium.firefox.FirefoxProfile;9import org.openqa.selenium.logging.LogType;10import org.openqa.selenium.logging.LoggingPreferences;11import org.openqa.selenium.remote.AbstractDriverOptions;12import org.openqa.selenium.remote.CapabilityType;13import org.openqa.selenium.remote.RemoteWebDriver;14import java.net.MalformedURLException;15import java.net.URL;16import java.util.Collections;17import java.util.HashMap;18import java.util.Map;19import java.util.logging.Level;20import java.util.logging.Logger;21public enum Browsers {22    CHROME {23        @Override24        protected RemoteWebDriver createDriver(String spec) throws MalformedURLException {25            return new RemoteWebDriver(new URL(spec), getOptions());26        }27        @Override28        protected ChromeOptions getOptions() {29            Logger.getLogger("org.openqa.selenium").setLevel(Level.SEVERE);30            Map<String, Object> prefs = new HashMap<>();31            prefs.put("profile.default_content_setting_values.notifications", 2);32            prefs.put("profile.managed_default_content_settings.javascript", 1);33            prefs.put("credentials_enable_service", false);34            prefs.put("profile.password_manager_enabled", false);35            LoggingPreferences chromeLogPrefs = new LoggingPreferences();36            chromeLogPrefs.enable(LogType.PERFORMANCE, Level.OFF);37            ChromeOptions chromeOptions = new ChromeOptions();38            chromeOptions.setCapability(ChromeDriverService.CHROME_DRIVER_SILENT_OUTPUT_PROPERTY, "true");39            chromeOptions.setCapability(ChromeDriverService.CHROME_DRIVER_VERBOSE_LOG_PROPERTY, "true");40            chromeOptions.setCapability(CapabilityType.LOGGING_PREFS, chromeLogPrefs);41            chromeOptions.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));42            chromeOptions.addArguments("--disable-gpu", "--disable-logging", "--disable-dev-shm-usage");43            chromeOptions.setAcceptInsecureCerts(true);44            chromeOptions.setPageLoadStrategy(PageLoadStrategy.NORMAL);45            chromeOptions.setHeadless(HEADLESS);46            chromeOptions.setExperimentalOption("prefs", prefs);47            return chromeOptions;48        }49    },50    FIREFOX {51        @Override52        protected RemoteWebDriver createDriver(String spec) throws MalformedURLException {53            return new RemoteWebDriver(new URL(spec), getOptions());54        }55        @Override56        protected FirefoxOptions getOptions() {57            Logger.getLogger("org.openqa.selenium").setLevel(Level.SEVERE);58            FirefoxOptions firefoxOptions = new FirefoxOptions();59            FirefoxProfile firefoxProfile = new FirefoxProfile();60            firefoxProfile.setPreference(FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE, true);61            firefoxProfile.setAcceptUntrustedCertificates(true);62            firefoxProfile.setAssumeUntrustedCertificateIssuer(true);63            LoggingPreferences firefoxLogPrefs = new LoggingPreferences();64            firefoxLogPrefs.enable(LogType.PERFORMANCE, Level.OFF);65            firefoxOptions.setCapability(CapabilityType.LOGGING_PREFS, firefoxLogPrefs);66            firefoxOptions.setCapability(FirefoxDriver.SystemProperty.BROWSER_LOGFILE, "/dev/null");67            firefoxOptions.setLogLevel(FirefoxDriverLogLevel.ERROR);68            firefoxOptions.setProfile(firefoxProfile);69            firefoxOptions.addPreference("dom.webnotifications.enabled", false);70            firefoxOptions.addPreference("gfx.direct2d.disabled", true);71            firefoxOptions.addPreference("layers.acceleration.force-enabled", true);72            firefoxOptions.addPreference("javascript.enabled", true);73            firefoxOptions.setHeadless(HEADLESS);74            return firefoxOptions;75        }76    };77    @Override78    public String toString() {79        return super.toString().toLowerCase();80    }81    private final static boolean HEADLESS = Boolean.getBoolean("headless");82    protected abstract RemoteWebDriver createDriver(String spec) throws MalformedURLException;83    protected abstract AbstractDriverOptions<?> getOptions();84}...Source:Browser.java  
1package jcucumberng.api;23import java.io.IOException;45import org.apache.commons.lang3.StringUtils;6import org.openqa.selenium.WebDriver;7import org.openqa.selenium.chrome.ChromeDriver;8import org.openqa.selenium.chrome.ChromeOptions;9import org.openqa.selenium.edge.EdgeDriver;10import org.openqa.selenium.firefox.FirefoxBinary;11import org.openqa.selenium.firefox.FirefoxDriver;12import org.openqa.selenium.firefox.FirefoxDriverLogLevel;13import org.openqa.selenium.firefox.FirefoxOptions;14import org.openqa.selenium.ie.InternetExplorerDriver;1516import io.github.bonigarcia.wdm.WebDriverManager;1718/**19 * {@code Browser} handles actions for instantiating the Selenium WebDriver.20 * 21 * @author Kat Rollo {@literal <rollo.katherine@gmail.com>}22 */23public final class Browser {2425	public enum WebBrowser {26		CHROME32, CHROME32_NOHEAD, FF32, FF32_NOHEAD, FF64, FF64_NOHEAD, EDGE, IE32, IE6427	}2829	private Browser() {30	}3132	/**33	 * Gets the Selenium WebDriver instance.34	 * 35	 * @param webBrowser the {@code web.browser} specified in36	 *                   {@code framework.properties}37	 * @return WebDriver - the Selenium WebDriver38	 */39	public static WebDriver getInstance(String webBrowser) throws IOException {40		WebDriver driver = null;4142		try {43			WebBrowser wb = WebBrowser.valueOf(StringUtils.upperCase(webBrowser));44			switch (wb) {45			case CHROME32:46				driver = Browser.chromedriver(32, false);47				break;48			case CHROME32_NOHEAD:49				driver = Browser.chromedriver(32, true);50				break;51			case FF32:52				driver = Browser.firefoxdriver(32, false);53				break;54			case FF32_NOHEAD:55				driver = Browser.firefoxdriver(32, true);56				break;57			case FF64:58				driver = Browser.firefoxdriver(64, false);59				break;60			case FF64_NOHEAD:61				driver = Browser.firefoxdriver(64, true);62				break;63			case EDGE:64				WebDriverManager.edgedriver().setup();65				driver = new EdgeDriver();66				break;67			case IE32:68				WebDriverManager.iedriver().arch32().setup();69				driver = new InternetExplorerDriver();70				break;71			case IE64:72				WebDriverManager.iedriver().arch64().setup();73				driver = new InternetExplorerDriver();74				break;75			default:76				break;77			}78		} catch (IllegalArgumentException e) {79			throw new IllegalArgumentException("Unsupported browser in framework.properties: " + webBrowser);80		}8182		return driver;83	}8485	/**86	 * Instantiates the Chrome WebDriver.87	 * 88	 * @param arch     32bit or 64bit89	 * @param headless run in headless mode90	 * @return WebDriver - the Chrome WebDriver91	 */92	private static WebDriver chromedriver(int arch, boolean headless) throws IOException {93		if (32 == arch) {94			if (Boolean.parseBoolean(Configuration.framework("chromedriver.version.on"))) {95				WebDriverManager.chromedriver().version(Configuration.framework("chromedriver.version")).setup();96			} else {97				WebDriverManager.chromedriver().setup();98			}99		}100101		if (headless) {102			ChromeOptions chromeOpts = new ChromeOptions();103			chromeOpts.addArguments("--headless");104			return new ChromeDriver(chromeOpts);105		}106107		return new ChromeDriver();108	}109110	/**111	 * Instantiates the Firefox WebDriver.112	 * 113	 * @param arch     32bit or 64bit114	 * @param headless run in headless mode115	 * @return WebDriver - the Firefox WebDriver116	 */117	private static WebDriver firefoxdriver(int arch, boolean headless) {118		if (32 == arch) {119			WebDriverManager.firefoxdriver().arch32().setup();120		}121122		if (64 == arch) {123			WebDriverManager.firefoxdriver().arch64().setup();124		}125126		if (headless) {127			FirefoxBinary ffBin = new FirefoxBinary();128			ffBin.addCommandLineOptions("--headless");129130			FirefoxOptions ffOpts = new FirefoxOptions();131			ffOpts.setBinary(ffBin);132			ffOpts.setLogLevel(FirefoxDriverLogLevel.WARN);133134			return new FirefoxDriver(ffOpts);135		}136137		return new FirefoxDriver();138	}139140}
...Source:FirefoxDriverLogLevel.java  
1// Licensed to the Software Freedom Conservancy (SFC) under one2// or more contributor license agreements.  See the NOTICE file3// distributed with this work for additional information4// regarding copyright ownership.  The SFC licenses this file5// to you under the Apache License, Version 2.0 (the6// "License"); you may not use this file except in compliance7// with the License.  You may obtain a copy of the License at8//9//   http://www.apache.org/licenses/LICENSE-2.010//11// Unless required by applicable law or agreed to in writing,12// software distributed under the License is distributed on an13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY14// KIND, either express or implied.  See the License for the15// specific language governing permissions and limitations16// under the License.17package org.openqa.selenium.firefox;18import com.google.common.collect.ImmutableMap;19import java.util.Map;20import java.util.logging.Level;21/**22 * <a href="https://github.com/mozilla/geckodriver#log-object">Log levels</a> defined by GeckoDriver23 */24public enum FirefoxDriverLogLevel {25  TRACE,26  DEBUG ,27  CONFIG,28  INFO,29  WARN,30  ERROR,31  FATAL;32  private final static Map<Level, FirefoxDriverLogLevel> logLevelToGeckoLevelMap33      = new ImmutableMap.Builder<Level, FirefoxDriverLogLevel>()34      .put(Level.ALL, TRACE)35      .put(Level.FINEST, TRACE)36      .put(Level.FINER, TRACE)37      .put(Level.FINE, DEBUG)38      .put(Level.CONFIG, CONFIG)39      .put(Level.INFO, INFO)40      .put(Level.WARNING, WARN)41      .put(Level.SEVERE, ERROR)42      .put(Level.OFF, FATAL)43      .build();44  @Override45  public String toString() {46    return super.toString().toLowerCase();47  }48  public static FirefoxDriverLogLevel fromString(String text) {49    if (text != null) {50      for (FirefoxDriverLogLevel b : FirefoxDriverLogLevel.values()) {51        if (text.equalsIgnoreCase(b.toString())) {52          return b;53        }54      }55    }56    return null;57  }58  public static FirefoxDriverLogLevel fromLevel(Level level) {59    return logLevelToGeckoLevelMap.getOrDefault(level, DEBUG);60  }61}...Enum FirefoxDriverLogLevel
Using AI Code Generation
1package com.automation.selenium.enums;2import org.openqa.selenium.firefox.FirefoxDriverLogLevel;3public class Example3 {4	public static void main(String[] args) {5		System.out.println(FirefoxDriverLogLevel.TRACE);6	}7}Enum FirefoxDriverLogLevel
Using AI Code Generation
1FirefoxOptions firefoxOptions = new FirefoxOptions();2firefoxOptions.setLogLevel(FirefoxDriverLogLevel.TRACE);3WebDriver driver = new FirefoxDriver(firefoxOptions);4FirefoxProfile firefoxProfile = new FirefoxProfile();5firefoxProfile.setPreference("webdriver.log.file", "logs/firefox.log");6FirefoxOptions firefoxOptions = new FirefoxOptions();7firefoxOptions.setProfile(firefoxProfile);8WebDriver driver = new FirefoxDriver(firefoxOptions);9FirefoxOptions firefoxOptions = new FirefoxOptions();10firefoxOptions.setPreference("webdriver.log.file", "logs/firefox.log");11WebDriver driver = new FirefoxDriver(firefoxOptions);12DesiredCapabilities capabilities = DesiredCapabilities.firefox();13capabilities.setCapability("webdriver.log.file", "logs/firefox.log");14WebDriver driver = new FirefoxDriver(capabilities);15FirefoxDriverService service = new FirefoxDriverService.Builder()16        .usingDriverExecutable(new File("path/to/geckodriver"))17        .usingAnyFreePort()18        .withEnvironment(FirefoxDriverService.createDefaultEnvironment())19        .withLogFile(new File("logs/firefox.log"))20        .build();Enum FirefoxDriverLogLevel
Using AI Code Generation
1import org.openqa.selenium.firefox.FirefoxDriverLogLevel;2import org.openqa.selenium.firefox.FirefoxOptions;3import org.openqa.selenium.firefox.FirefoxProfile;4public class FirefoxDriverLogLevelExample {5    public static void main(String[] args) {6        System.setProperty("webdriver.firefox.logfile", "firefox.log");7        System.setProperty("webdriver.firefox.loglevel", "TRACE");8        String logLevel = System.getProperty("webdriver.firefox.loglevel");9        System.out.println("logLevel = " + logLevel);10        FirefoxOptions options = new FirefoxOptions();11        options.setLogLevel(FirefoxDriverLogLevel.TRACE);12        FirefoxDriverLogLevel logLevel1 = options.getLogLevel();13        System.out.println("logLevel1 = " + logLevel1);14        FirefoxProfile profile = new FirefoxProfile();15        profile.setLogLevel(FirefoxDriverLogLevel.TRACE);16        FirefoxDriverLogLevel logLevel2 = profile.getLogLevel();17        System.out.println("logLevel2 = " + logLevel2);18        System.exit(0);19    }20}LambdaTest’s Selenium 4 tutorial is covering every aspects of Selenium 4 testing with examples and best practices. Here you will learn basics, such as how to upgrade from Selenium 3 to Selenium 4, to some advanced concepts, such as Relative locators and Selenium Grid 4 for Distributed testing. Also will learn new features of Selenium 4, such as capturing screenshots of specific elements, opening a new tab or window on the browser, and new protocol adoptions.
Upgrading From Selenium 3 To Selenium 4?: In this chapter, learn in detail how to update Selenium 3 to Selenium 4 for Java binding. Also, learn how to upgrade while using different build tools such as Maven or Gradle and get comprehensive guidance for upgrading Selenium.
What’s New In Selenium 4 & What’s Being Deprecated? : Get all information about new implementations in Selenium 4, such as W3S protocol adaption, Optimized Selenium Grid, and Enhanced Selenium IDE. Also, learn what is deprecated for Selenium 4, such as DesiredCapabilites and FindsBy methods, etc.
Selenium 4 With Python: Selenium supports all major languages, such as Python, C#, Ruby, and JavaScript. In this chapter, learn how to install Selenium 4 for Python and the features of Python in Selenium 4, such as Relative locators, Browser manipulation, and Chrom DevTool protocol.
Selenium 4 Is Now W3C Compliant: JSON Wireframe protocol is retiring from Selenium 4, and they are adopting W3C protocol to learn in detail about the advantages and impact of these changes.
How To Use Selenium 4 Relative Locator? : Selenium 4 came with new features such as Relative Locators that allow constructing locators with reference and easily located constructors nearby. Get to know its different use cases with examples.
Selenium Grid 4 Tutorial For Distributed Testing: Selenium Grid 4 allows you to perform tests over different browsers, OS, and device combinations. It also enables parallel execution browser testing, reads up on various features of Selenium Grid 4 and how to download it, and runs a test on Selenium Grid 4 with best practices.
Selenium Video Tutorials: Binge on video tutorials on Selenium by industry experts to get step-by-step direction from automating basic to complex test scenarios with Selenium.
LambdaTest also provides certification for Selenium testing to accelerate your career in Selenium automation testing.
Get 100 minutes of automation test minutes FREE!!
