Miscellaneous
File Upload
In Selenium, automating file uploads involves interacting with the file input element on a webpage and sending the file path to it. Here is a step-by-step guide on how to handle file uploads using Selenium WebDriver:
1. Locate the File Input Element
Find the file input element on the webpage using findElement() method from WebDriver.
2. Send File Path to the Element
Use the sendKeys() method to send the file path to the file input element.
WebDriver driver = new ChromeDriver(); driver.get("https://www.testautomationstudio.com/demo/misc/"); driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30)); driver.manage().window().maximize(); WebElement fileToUploadElem = driver.findElement(By.id("fileToUpload")); fileToUploadElem.sendKeys("Full path to file"); driver.quit();
IWebDriver driver = new ChromeDriver(); driver.Url = "https://www.testautomationstudio.com/demo/misc/"; driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30); driver.Manage().Window.Maximize(); IWebElement fileToUploadElem = driver.FindElement(By.Id("fileToUpload")); fileToUploadElem.SendKeys("Full path to file"); driver.Quit();
Screenshots
Taking screenshots in Selenium can be helpful for debugging or recording the state of the browser during test execution. Selenium provides the TakesScreenshot interface, allowing you to capture screenshots of the current state of the browser.
Following example will capture the screenshot of the current state of the browser. The steps to take a screenshot in Selenium WebDriver are :
- Casting WebDriver to TakesScreenshot
- Capture Screenshot and Save to File
- Copy Screenshot to Desired Location
WebDriver driver = new ChromeDriver(); driver.get("https://www.testautomationstudio.com/demo/home/"); driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30)); driver.manage().window().maximize(); // Cast WebDriver to TakesScreenshot TakesScreenshot screenshot = (TakesScreenshot)driver; // Capture screenshot as File File screenshotFile = screenshot.getScreenshotAs(OutputType.FILE); try { // Save screenshot to a specific location FileHandler.copy(screenshotFile, new File("path/to/screenshot.png")); } catch (IOException e) { e.printStackTrace(); } driver.quit();
IWebDriver driver = new ChromeDriver(); driver.Url = "https://www.testautomationstudio.com/demo/home/"; driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30); driver.Manage().Window.Maximize(); ITakesScreenshot screentshot = (ITakesScreenshot)driver; screentshot.GetScreenshot().SaveAsFile("path/to/screenshot.png"); driver.Quit();
Headless
Running Selenium in headless mode allows the browser to operate without a graphical user interface (GUI). This mode is useful for executing tests in a more efficient and faster manner, especially in continuous integration environments or when running tests in the background without launching a visible browser window. To enable the headless mode add argument "--headless" to the browseroptions.
Following example will run the chrome browser in headless mode.
ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.addArguments("--headless"); WebDriver driver = new ChromeDriver(chromeOptions); driver.get("https://www.testautomationstudio.com/demo/home/"); driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30)); driver.manage().window().maximize(); //Perform all element interaction driver.quit();
ChromeOptions options = new ChromeOptions(); options.AddArgument("--headless"); IWebDriver driver = new ChromeDriver(options); driver.Url = "https://www.testautomationstudio.com/demo/home/"; driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30); driver.Manage().Window.Maximize(); driver.Quit();