Is there a way to retrieve the browser version?
>>> from selenium import webdriver
>>> driver = webdriver.Chrome()
>>> print(version) <-- Any suggestions on how to accomplish this?
Chrome 92.0
Is there a way to retrieve the browser version?
>>> from selenium import webdriver
>>> driver = webdriver.Chrome()
>>> print(version) <-- Any suggestions on how to accomplish this?
Chrome 92.0
The properties
attribute holds key information about the browser, making it possible to access details like this:
console.log(browser.properties['version'])
While the previous answer was helpful in navigating me towards a solution, it focused on Python, and I needed to tackle the issue using Java which presented its own set of challenges. Currently, I am working with selenium version 2.25.0.
//Ensure that the necessary import statements are included - I had to insert these
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
WebDriver driver = new FirefoxDriver();
Capabilities caps = ((RemoteWebDriver) driver).getCapabilities();
String browserName = caps.getBrowserName();
String browserVersion = caps.getVersion();
System.out.println(browserName+" "+browserVersion);
For those on Chrome, try the following:
driver.capabilities['version']
If you prefer Firefox:
driver.capabilities['browserVersion']
If you are having trouble with driver.capabilities['version']
, double check the capabilities settings. The version number may be located under a different key than expected. I encountered a key error on Windows 10 while trying to retrieve the version number using the version
key.
To verify the capabilities:
print driver.capabilities
In my case, this method works for Chrome running on Linux:
driver.capabilities['version']
However, for Chrome on Windows 10, use:
driver.capabilities['browserVersion']
Although not directly related to the previous question, this information could be valuable to anyone seeking guidance on how to code a test based on different behaviors exhibited by various web browsers (such as Firefox vs Chrome). I came across this while searching for a similar solution and wanted to share in case it proves helpful to someone else.
If you are using Python and simply need to identify the browser being tested (e.g., firefox, chrome, ie), you can utilize...
driver.name
...within an if statement. This assumes that you have already assigned the web browser being tested to the variable driver. However, if your testing requirements involve multiple versions of the same browser, you may also want to access driver.version. I hope this information proves beneficial to others who may find themselves in a similar situation. The answer I was seeking led me to this thread, prompting me to contribute in case it aids someone else.
To retrieve the browser version of the GeckoDriver initialized firefox session, you can access the capabilities object which provides a dictionary. Here is the code snippet to accomplish this:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'
driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\WebDrivers\geckodriver.exe')
my_dict = driver.capabilities
print("Mozilla Firefox browser version is: " + str(my_dict['browserVersion']))
driver.quit()
The output on the console will be:
Mozilla Firefox browser version is: 77.0.1
In a similar manner, you can gather all the properties from the dictionary using this code snippet:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'
driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\WebDrivers\geckodriver.exe')
my_dict = driver.capabilities
for key,val in my_dict.items():
print (key, "=>", val)
driver.quit()
The console will display:
acceptInsecureCerts => True
browserName => firefox
browserVersion => 77.0.1
moz:accessibilityChecks => False
moz:buildID => 20200602222727
moz:geckodriverVersion => 0.26.0
moz:headless => False
moz:processID => 12668
moz:profile => C:\Users\Soma Bhattacharjee\AppData\Local\Temp\rust_mozprofileFc1B08
moz:shutdownTimeout => 60000
moz:useNonSpecCompliantPointerOrigin => False
moz:webdriverClick => True
pageLoadStrategy => normal
platformName => windows
platformVersion => 10.0
rotatable => False
setWindowRect => True
strictFileInteractability => False
timeouts => {'implicit': 0, 'pageLoad': 300000, 'script': 30000}
unhandledPromptBehavior => dismiss and notify
If you need to wrap your WebDriver with EventFiring capabilities, creating a custom implementation of EventFiringWebDriver is necessary.
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.HasCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.events.EventFiringWebDriver;
public class CustomEventFiringWebDriver extends EventFiringWebDriver implements HasCapabilities {
private RemoteWebDriver driver;
public CustomEventFiringWebDriver(RemoteWebDriver driver) {
super(driver);
this.driver = driver;
}
@Override
public Capabilities getCapabilities() {
return driver.getCapabilities();
}
}
I wanted to share this solution as I faced the same issue myself.
If you're a Python user looking to display all the capabilities, I have the answer for you. It's a simple command that gets the job done.
print driver.capabilities
When working with C# Selenium, I implemented the following code:
ICapabilities capabilities = ((RemoteWebDriver)driver).capabilities;
capabilities.GetCapability("browserName");
capabilities.GetCapability("browserVersion");
The code executed smoothly without any issues.
I am currently working on a Python script to validate an ECDSA signature, but I am facing challenges in the process. Below is the code snippet I am using: public_key = ecdsa.VerifyingKey.from_string(pubkey, curve=ecdsa.SECP256k1) verified = public_key.ve ...
Hello everyone at Stackoverflow, I have been using Selenium and Python to automate a task successfully in myscript.py. In an attempt to convert it to myscript.exe, I used the following command with PyInstaller: PyInstaller --onefile --windowed --icon=&quo ...
Currently, I am testing the registration feature of an application. If any required fields are left empty and the registration button is clicked, an alert box will appear displaying an error message. I have written a script to handle these alert boxes. How ...
I'm struggling with creating a function in Python that takes three boolean values and returns true if at least two are true. The function seems to work fine when I call it explicitly in the interpreter after running the program: >>> function ...
As a newcomer to selenium UI automation, I am currently experimenting with a simple application using Java and TestNG. My goal is to integrate this test with Continuous Integration (CI), but the test environment URL will vary with each deployment. The ke ...
Currently, I am working on converting the JSON output received from an API request into a CSV format for storage in our database. Below is the code snippet I am using for reference: // Python code here... Sample data obtained from the API: // Sample API ...
Currently, I am working with an image processing task: img = cv2.imread("sky.png", 1) In my process, I aim to add a pixel in each column for every channel. My approach involves the following steps: img[row_1, :, 0] = np.insert(img[row_1,:,0], column_1, ...
Recently, I added a new folder to my project in order to utilize methods from files in another project. The process involved adding just the first 3 lines: import sys import os sys.path.insert(0, '/path/to/another/dir') from file_methods import ...
My goal is to extract the membership years data from the IMDB Users page. Link On this page, there are multiple badges and one badge that is common for all users is the last one. This is the code I am using: def getYear(review_url): respons ...
Several months ago, I created a web scraper to track job listings for a football club. Everything was running smoothly until about a week ago when the program started experiencing multiple issues. Despite my efforts to troubleshoot and make changes to the ...
When accessing my project site, I need to use two different proxies. How can this be managed using Selenium Webdriver? Your assistance on this matter would be greatly appreciated. ...
checkActiveInterfaces() { var totalSum = 0; var counter; for (counter = 1; counter <= 5; counter++) { cy.xpath(`(//*[name()='g' and @class ='highcharts-label highcharts-data-label highcharts-data-label- ...
Being relatively new to coding and Python, I must admit that this question may seem foolish. But, I am in need of a script that can navigate through all 19,000 search results pages and extract the URLs from each page. Currently, I have managed to scrape th ...
When attempting to combine several files with the extension .xlsx.zip into one, I keep encountering this particular error. To start off, I am utilizing glob.glob to select the files which is working perfectly: stock_files = glob.glob('*/*.xlsx.zip&ap ...
After browsing several pages on stackoverflow, I have not been able to find a solution to my current problem. My goal is to automate a work process using selenium (python). This process requires logging into a web portal, selecting specific search criteria ...
As a beginner in Odoo, I am looking to include the salesperson's name on the invoice like shown in this image, and have it displayed on the invoice PDF printout. Can anyone advise me on which file to edit in the Odoo system? Also, how can I successful ...
A few months ago, everything was working perfectly with my test. However, now it fails and I'm unsure why or how to resolve the issue. Background: On a screen, there are various links that allow the logged-in 'admin' user to log in as one ...
When it comes to running tests, my usual approach involves launching a separate container using the following command: docker-compose run --rm web /bin/bash The 'web' container contains django, and I typically run py.test from a shell periodica ...
I've been encountering an issue while trying to run my first Flask app. After sending a POST request on Postman, I keep getting the following error: Error: werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The server couldn't understand t ...
Can you explain the meaning of the DeprecationWarning? I noticed that if I remove the "elem" functions, it seems to work. However, when the Chrome tab opens with the link, it immediately closes again. from selenium import webdriver from selenium.webdriver ...