ChromeDriver run without Chrome installed? - selenium

Short question. Is there possibility to run chromedriver and selenium work without chrome app installed?
Thanks

The answer is No. You have to have the chrome application inside your computer. However, you do not need t install it. It will work with any portable Chrome versions as well.
You simply have to point to the chrome executable location during tests.
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/chrome/binary");
ChromeDriver driver = new ChromeDriver(options);

Related

Getting Timed out receiving message from renderer: 600.000 When we execute selenium scripts using Jenkins windows service mode

We are executing our selenium automation script using jenkins window service(Headless mode) on daily basis .it was working fine till yesterday. suddenly it stopped working and not launching the browser. it shows the below error message [1553677874.187][SEVERE]: Timed out receiving message from renderer: 600.000. after that all the remaining test cases are getting failed.
It is working fine if we run the build using jenkins as without windows service. We are experiencing this issue only with windows as service
My chrome driver version :73.0.3683.68
Chrome browser version :73.0.3683.68
Selenium Version :3.14.0
I have tried to downgrade the browser version and driver version. even though it is not working
I am expecting the browser should launch in the background when we execute using jenkins as windows service but getting error message.
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("load-extension=C:\\1.13.4_0");
options.addArguments("--start-maximized");
options.addArguments("--ignore-certificate-errors");
options.addArguments("--disable-popup-blocking");
// options.addArguments("window-size=1400,600");
options.addArguments("enable-automation");
options.addArguments("--headless");
options.addArguments("--window-size=1920,1080");
options.addArguments("--no-sandbox");
// options.addArguments("--disable-extensions");
options.addArguments("--dns-prefetch-disable");
options.addArguments("--disable-gpu");
options.setPageLoadStrategy(PageLoadStrategy.NORMAL);
DesiredCapabilities capabilities =
DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY,
**strong text**options);
return new ChromeDriver(capabilities);
Seems you are using the following configuration:
chromedriver=73.0.3683.68
chrome=73.0.3683.68
Windows OS
John Chen (Owner - chromedriver) recently have confirmed that,
We have confirmed issues with take screenshot when Chrome 73.0.3686.75 is started by a service (such as Jenkins or Task scheduler) on Windows. Please see https://crbug.com/942023 for more details. We apologize for any inconvenience caused by this. However, we haven't yet been able to observe similar issue on Linux, so we appreciate any help you can provide to enable us to reproduce the issue on Linux. We don't have access to TeamCity, but we have tested take screenshot using Docker image produced by Selenium (selenium/standalone-chrome:3.141.59-lithium), and didn't find any problems.
Yesterday (Mar 26, 2019), John once again confirmed:
I am aware of some issues with running Chrome 73 from Jenkins. I don't know any workarounds. Please following https://crbug.com/942023 for updates.
Update
We were able to dig up the main issue. The main issue is not with ChromeDriver v73.x as such but with Chrome v73.x and John officially confirms it as:
The root cause is indeed in Chrome 73.x, not in ChromeDriver. We are working with Chrome devs to find a solution.
Solution
A quick fix solution will be to:
Downgrade Chrome Browser to Chrome v72.x
Use a matching ChromeDriver among:
ChromeDriver 2.46
ChromeDriver 72.0.3626.69
Note: If you are using Chrome version 72, please download ChromeDriver 2.46 or ChromeDriver 72.0.3626.69
Ensure that JDK is upgraded to recent level of JDK 8u202.
Outro
You can find the relevant discussions in:
Page.captureScreenshot no longer works in Chrome 73 under Selenium as a Service on Windows
Error [SEVERE]: Timed out receiving message from renderer: 20.000 while executing the testsuite through Selenium on Jenkins
Download Google Chrome 72 Offline Installer For All Operating Systems
Update(03-April-2019)
Adding the argument --disable-features=VizDisplayCompositor through an instance of ChromeOptions() seems solves the issue:
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-features=VizDisplayCompositor");
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
Possible problem is that your Google Chrome updated and became incompatible with your Chromedriver. I suggest either getting a new Chromedriver or downgrading your Google Chrome to a previous version and disabling auto updates.
You can verify the required Chromedriver version for your Google Chrome here:
http://chromedriver.chromium.org/downloads
Step 4 of the following link worked for me to disable automatic google Chrome updates.
https://www.webnots.com/7-ways-to-disable-automatic-chrome-update-in-windows-and-mac/
Add below property(1) before ChromeDriver initialization
System.setProperty("webdriver.chrome.silentOutput", "true");
driver = new ChromeDriver();

which version of firefox do we need for Selenium 3.3.1?

which version of firefox do we need for Selenium 3.3.1?? I'm trying to use firefox 51 with selenium 3.3.1 and I'm not able to launch the application please let me know which browser do we need to use for selenium 3.3.1
Firefox 51/52 works well with GeckoDriver 0.15.0 and Selenium 3.3.1. You would need to download correct version of GeckoDriver based on whether Firefox is 32-bit or 64-bit in Windows. Also, you may need to provide Firefox Binary which can be done with FirefoxOptions class.
FirefoxOptions options = new FirefoxOptions();
options.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
FirefoxDriver driver = new FirefoxDriver(options);
driver.get("http://www.google.com");
Refer this article for more details - http://www.automationtestinghub.com/selenium-3-0-launch-firefox-with-geckodriver/
To quote the team of geckodriver:
Support is best in Firefox 48 and onwards, although generally the more
recent the Firefox version, the better the experience as they have
more bug fixes and features. We strongly advise using the latest
Firefox Nightly with geckodriver, and want to make it clear that
Firefox 47 and earlier is explicitly not supported. Since Windows XP
support in Firefox will be dropped with Firefox 53, we do not support
this platform.
see also: https://github.com/mozilla/geckodriver/blob/master/README.md
I have a Windows 32 bit machine.
Selenium WebDriver - 3.4.0, Selenium.Support - 3.4.0
Firefox - 54.0 (32 bit)
GeckoDriver (32 bit) downloaded and stored locally - https://github.com/mozilla/geckodriver/releases
Firefox installed and it's 'firefox.exe' path is provided.
Code to launch Firefox Browser below:
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(#"C:\GeckoDriver");
service.FirefoxBinaryPath = #"C:\Program Files\Mozilla Firefox\firefox.exe";
driverInstance = new FirefoxDriver(service);

How to run selenium tests in headless mode on Mac using Webdriver with firefox 17.0.1

How to run Automated selenium tests in Mac OS 10.8 with firefox 17.0.1 using Xvfb(X-virtual frame buffer)
Anyone help me regarding this configuration.
I don't think such old Firefox version is still relevant. But for those who still want to use old Firefox versions - take a look at Selenoid project. This is a lightweight Selenium-compatible server coming with a set of prebuilt Docker images for all Firefox versions starting with 3.6. All images include Xvfb inside, so this solution is completely headless.
Will you try adding this option to your binary of Firefox if you are using
binary of Firefox.
binary.addArguments("-headless");
If you are not using binary and using driver as new Firefox driver then
FirefoxOptions fireFoxOptions = new FirefoxOptions();
fireFoxOptions.addArguments("-headless");
DesiredCapabilities firefoxcapabilities = DesiredCapabilities.firefox();
capabilities.setCapability(ChromeOptions.CAPABILITY,fireFoxOptions);
WebDriver firefoxdriver = new FirefoxDriver(firefoxcapabilities);
Also, this is a very old version of Firefox I will prefer upgrading the version if you don't have any restrictions upgrading it.

how to use different version of firefox using webdriver?

how to set Firefox version in web-driver?
I just want to user different version of Firefox.
like different version 19, 20 , 21....
please provide a generic solution which help for other browser also.
You have to install all the versions on your system. Then you can use the System property webdriver.firefox.bin to define the path for Firefox. Note than since the path is set through a System property, you will not be able to run two different Firefox in the same Java process.
This solution is specific to Firefox. There is no generic solution. You have to configure every WebDriver yourself.
More information about the configuration of Firefox Web Drvier.
Finally i have found solution to run with different browser version
System.setProperty("webdriver.firefox.bin", "/Applications/Firefox-2.app/Contents/MacOS/firefox-bin");
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
System.out.println(driver.getTitle());
driver.close();
driver.quit();
I have found how to start a different FireFox browser (actually WaterFox) in Python Selenium, replacing
driver = webdriver.Firefox()
with
driver = webdriver.Firefox(firefox_binary = "/path/to/my/waterfox")
(Ubuntu 20.04, Python 3.95)

How to test multiple version of google chrome using chromedriver?

selenium web-driver with java then how to use chrome driver for test their lower version of Google chrome
From the official wiki page:
Overriding the Chrome binary location
You can specify the location of the Chrome binary by passing the "chrome.binary" capability, e.g. with a typical Chromium install on Debian:
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.binary", "/usr/lib/chromium-browser/chromium-browser");
WebDriver driver = new ChromeDriver(capabilities);
I suggest you try this approach - tell where the binary of lower version is and start ChromeDriver. Never tried it, but I think it might work
You would use capabilities to point to the right binary file of the browser to be launced.But not all versions of chrome browser is supported by different versions of chromedriver. You will find exceptions stating that version of browser expected is greater or equal to 30.0.
For ex:- Chromium Browser(33.0.1729.0 )works fine with ChromeDriver 2.7 and not the with the older ones.
You can choose from all the chromedriver version available from the link below:-
http://chromedriver.storage.googleapis.com/index.html
Install chrome to custom location, be sure to turn off auto-update. Use following code to use non-default binary.
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/binary");
DesiredCapabilities desiredCapabilities = DesiredCapabilities.chrome();
desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver webDriver = new ChromeDriver(desiredCapabilities);