I use Selenium RC for testing. Now to perform a load test, I want to run parallel test cases.
Is there any way to run them without opening a browser?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Chrome now has a headless mode:
op = webdriver.ChromeOptions()
op.add_argument('headless')
driver = webdriver.Chrome(options=op)
Method 2
Try this code:
op = webdriver.ChromeOptions()
op.add_argument('headless')
driver = webdriver.Chrome(options=op)
Method 3
To set up on Centos (do all installation as root)
Install pip Download https://bootstrap.pypa.io/get-pip.py
python get-pip.py
Installing selenium
If you have pip on your system, you can simply install or upgrade the Python bindings:
pip install -U selenium
Alternately, you can download the source distribution from PyPI (e.g. selenium-2.53.1.tar.gz), unarchive it, and run:
python setup.py install
install the program: pyvirtualdisplay
pip install pyvirtualdisplay yum install Xvfb libXfont Xorg
Then modify your script to add the bold lines within ** and **
**from pyvirtualdisplay import Display**
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
class SeleniumDemo(unittest.TestCase):
def setUp(self):
**self.display = Display(visible=0, size=(800, 600))
self.display.start()**
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "http://www.soastastore.com/"
self.verificationErrors = []
self.accept_next_alert = True
def tearDown(self):`enter code here`
self.driver.quit()
***self.display.stop()***
self.assertEqual([], self.verificationErrors)
Method 4
You can run Selenium headless, take a look at this question/answer: Is it possible to hide the browser in Selenium RC?
Especially for performance load tests, you should have a look at
Apache JMeter.
Method 5
Since PhantomJS has been deprecated, using headless versions of Firefox would be a viable option.
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument("--headless")
driver = webdriver.Firefox(options=options)
driver.get('https://www.google.com/')
Method 6
Always follow the Documentation. Here is what selenium doc says. It provide a standalone jar.
-
Download the standalone jar. And run it with command
java -jar selenium-server-standalone.jar
- Now you will see a stanalone server started.
-
Now set up your webdriver like below and rest part will be as it is.
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities={'browserName': 'htmlunit', 'version': '2', 'javascriptEnabled': True}) -
Summary code will be like.
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver.common.keys import Keys driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities={'browserName': 'htmlunit', 'version': '2', 'javascriptEnabled': True}) driver.get("http://www.python.org") assert "Python" in driver.title elem = driver.find_element_by_name("q") elem.clear() elem.send_keys("pycon") elem.send_keys(Keys.RETURN) assert "No results found." not in driver.page_source driver.close()
Method 7
It is possible, but not with the standard firefox driver / chrome / etc.
You would need to install PhantomJS. Just assign your WebDriver to an instance of phantomJS driver:
driver = webdriver.PhantomJS()
If you run your code now, no browser window will be opened.
Method 8
You can import Options if you don’t want to open a web browser.
from selenium import webdriver # for webdriver from selenium.webdriver.support.ui import WebDriverWait # for implicit and explict waits from selenium.webdriver.chrome.options import Options # for suppressing the browser
Then in the code:
option = webdriver.ChromeOptions()
option.add_argument('headless')
driver = webdriver.Chrome(options=option)
And continue with the rest of the program.
Method 9
requirements:
sudo apt-get install xvfb pip install selenium pip install PyVirtualDisplay
download chrome driver binary from below link and paste into drivers directory: https://sites.google.com/a/chromium.org/chromedriver/downloads
code:
from selenium import webdriver
from pyvirtualdisplay import Display
with Display(visible=False, size=(800, 600)):
browser = webdriver.Chrome('drivers/chromedriver')
browser.get('https://www.example.com')
print(browser.page_source)
browser.quit()
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0