How to run a front-end test in Ubuntu without a monitor
A long time ago, I also used selenium for automated integration testing, using HtmlUnit webdriver, so no display is needed. However, HtmlUnit is always unsatisfactory. Recently, I found this article in my project to solve my long-standing problem: Running Firefox integration testing on servers without monitors.
Selenium is a web automation testing framework. It can be used for automated web application testing. However, I don't just use it for testing. I also use it to crawl javascript or AJAX content from the sign-in page of an e-commerce website.
As a programmer, I am not satisfied with Using Selenium IDE to record and replay macro records. This is not suitable for deploying on multiple servers. In this case, you need Selenium WebDriver, which is flexible and runs Selenium headless and does not need to display devices on the server.
Why should I run the Headless Selenium test?
When you want to run Robust Automatic operations on the server, and its operations depend on 27X7, you also want it to be stable, selenium is your only choice. However, Selenium needs to run on a browser. So you have to lie to Selenium to make it feel that it is running on a machine with a monitor. In this way, you can run automated tests without losing stability and scalability.
How to run Selenium headless on Ubuntu
This tutorial aims to configure and run selenium headless on ubuntu with Mozilla Firefox as the main browser.
Install Firefox headless
Make sure your ubuntu is installed with the latest Firefox version. I have encountered incompatibility between Selenium and Firefox versions. If you have not installed Firefox or use an earlier version of Firefox, follow these steps to Upgrade Firefox:
Add the following to/etc/apt/sources. list:
Ppa: mozillateam/firefox-stable
Run the following command to upgrade or install Firefox
Sudo apt-get update
Sudo apt-get install firefox
After running successfully, the latest version of Firefox should be installed on ubuntu.
Install Xvfb-an X Virtual framework
This simulation framework uses virtual memory to allow X-Server to run on machines without display devices. In this way, the browser can run. To install xvfb on ubuntu and Debian, run the following command:
Sudo apt-get install xvfb
Now, you can run the xvfb service on a digital display device to prevent conflicts when you add devices in the next stage. In this tutorial, we assign a display device 10.
Sudo Xvfb: 10-ac
-Ac: Disable access control for xvfb. Okay, the server can run.
Start the browser
Before running the browser, you must first set the DISPLAY environment variable to specify the DISPLAY device on which xvfb runs. Before adding environment variables, let's check that all of these are as expected:
Export DISPLAY =: 10
Firefox
If no error is displayed on the terminal (terminal), it means that you have successfully run Firefox on ubuntu without a display device. It runs until you use ctrl + C or other similar methods to stop it. At the same time, it does not have any output.
If you can successfully run the above steps, the next part will be easy. Now we can run selenium on the ubuntu server, just as you are running locally. In the next section of this tutorial, I will show you how to run an independent selenium server and use the PHP selenium webdriver to connect to the server.
Summary
A long time ago, I also used selenium for automated integration testing, using HtmlUnit webdriver, so no display is needed. However, HtmlUnit is always unsatisfactory. Recently, I found this article in my project to solve my long-standing problem: Running Firefox integration testing on servers without monitors.
In this article, I will try to explain it more. Something wrong. Thank you!