Java Selenium Chrome driver - Disable logging - java

I'm working with Selenium Chrome driver and want to disable logging, I'v tried all existing solutions including :
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--log-level=3");
and
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.verbose", false);
but none worked for me, still having this Info and warning log showing up :
Starting ChromeDriver 2.25.426924 (649f9b868f6783ec9de71c123212b908bf3b232e) on port 17965 Only local
connections are allowed. Jul 25, 2017 7:01:16 PM
org.openqa.selenium.remote.ProtocolHandshake createSession INFO:
Attempting bi-dialect session, assuming Postel's Law holds true on the
remote end Jul 25, 2017 7:01:16 PM
org.openqa.selenium.remote.ProtocolHandshake createSession INFO:
Detected dialect: OSS

This is what I have been doing and it has worked so far for me.
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArgument("--log-level=3");
chromeOptions.addArgument("--silent");
WebDriver driver = new ChromeDriver(chromeOptions);

For Minimum output you can use the below code -
System.setProperty("webdriver.chrome.silentOutput", "true");
java.util.logging.Logger.getLogger("org.openqa.selenium").setLevel(Level.OFF);

Only --log-level=3 works for me, tested on:
Ruby, watir, selenium 3.142.3, chromedriver 75.0.3770.140 , win 10
Ruby code:
options = Selenium::WebDriver::Chrome::Options.new
default_options = %w[--log-level=3]
default_options.each do |option|
options.add_argument(option)
end
#driver = Watir::Browser.new :chrome, options: options

Running chromedriver --help it states if you want to turn logging off, you need to add argument "--silent" (log nothing (equivalent to --log-level=OFF)
in other words:
chromeOptions.addArgument("--silent");

Related

ChromeDriver Unable to add Performance Logging in Selenium Java

I have looked at the web search results and answers on stackoverflow on this topic but I couldn't find anyone having same issue. Following is code to enable performance logging that I am using:
ChromeOptions options = new ChromeOptions();
// options.addArguments("--headless");
options.addArguments("--remote-debugging-port=9222");
options.addArguments("--no-sandbox");
options.addArguments("--disable-application-cache");
options.addArguments("--disable-notifications");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--disable-extensions");
options.addArguments("--test-type");
options.addArguments("start-maximized");
options.addArguments("disable-infobars");
//options.addArguments("user-data-dir=C:\\apps\\selenium\\chrome\\data");
options.setExperimentalOption("useAutomationExtension", false);
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
// add Network logging
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
options.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
Map<String, Object> perfLogPrefs = new HashMap<String, Object>();
perfLogPrefs.put("enableNetwork", true);
perfLogPrefs.put("traceCategories", "devtools.network");
options.setExperimentalOption("perfLoggingPrefs", perfLogPrefs);
webDriver = new ChromeDriver(options);
webDriver.manage().deleteAllCookies();
webDriver.manage().window().maximize();
When executed, it gives following error:
Starting ChromeDriver 80.0.3987.16 (320f6526c1632ad4f205ebce69b99a062ed78647-refs/branch-heads/3987#{#185}) on port 27252
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
org.openqa.selenium.InvalidArgumentException: invalid argument: entry 0 of 'firstMatch' is invalid
from invalid argument: perfLoggingPrefs specified, but performance logging was not enabled
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03
What am I missing in above? The code examples use ChromeDriver(Capabilities) but that is deprecated. Is there some other setting that I need to enable before adding performance logging?
Thanks
I was able to find the answer on at SeleniumHQ issues. Essentially, CapabilityType.LOGGING_PREFS is broken in this version of ChromeDriver. I changed the line
options.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
to
options.setCapability("goog:loggingPrefs", logPrefs);
the preference name was changed to goog:loggingPrefs to be W3C compliant. I was able to collect network logs after this change.

Selenium UnreachableBrowserException - Java

System.setProperty("webdriver.chrome.driver","D:/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.navigate().to("https://link");
driver.findElement(By.cssSelector("#username")).sendKeys("id");
driver.findElement(By.cssSelector("#password")).sendKeys("pass");
driver.findElement(By.cssSelector("#clientName")).sendKeys("name");
driver.findElement(By.cssSelector("#submitButton")).click();
System.out.println("Okay !");
I set property for Chrome Driver. When I run it gives an error. (Below) I searched a lot but didn't found any solution.
Starting ChromeDriver 2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab) on port 10589
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T15:15:03.216Z'
System info: host: 'DESKTOP-9HVORCR', ip: '192.168.1.24', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_171'
Driver info: driver.version: ChromeDriver
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:564)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:207)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
at zaaa.main.main(main.java:11)
Caused by: java.lang.IllegalArgumentException: Unexpected char 0x131 at 23 in User-Agent value: selenium/3.12.0 (java wındows)
at okhttp3.Headers$Builder.checkNameAndValue(Headers.java:338)
at okhttp3.Headers$Builder.add(Headers.java:288)
at okhttp3.Request$Builder.addHeader(Request.java:177)
at org.openqa.selenium.remote.internal.OkHttpClient.execute(OkHttpClient.java:85)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:101)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
... 6 more
I have tried these:
32/64 bit drivers.
Run it as administrator.
Creating a Try/Catch block.
Other drivers. (Like Operadriver.exe) (Result: Same error)
I think your windows is not english. I am having the same problem. When I tried the same in an english version windows 10 the code works without any problem.
Locale.setDefault(new Locale("en", "EN"));
you can also try this. it worked for me.
Add these lines before instantiating "WebDriver driver = new ChromeDriver();"
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--no-sandbox");
Then add the argument where you have declared Webdriver as shown below:-
WebDriver driver = new ChromeDriver(chromeOptions);
I hope it will help you.
Here you are using
selenium version : 3.12.0
chromedriver version : 2.40
When i tried to run with these configurations (they are latest at present)
I am able to launch the application without any exception and in the logs getting :
Starting ChromeDriver 2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab) on port 35584
Only local connections are allowed.
Jun 21, 2018 2:42:51 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Okay !
which is same as your starting logs.
My chrome browser version is :
Version 67.0.3396.87 (Official Build) (64-bit)
I think you should check your .m2 folder and delete
.m2\repository\org\seleniumhq\selenium
folder from there and then again try to download the dependencies.
Also update to latest chrome browser version.
Hope it helps.
This is a problem of Turkish Windows. As it is indicated in exception message the 'ı' character in user agent value "selenium/3.12.0 (java wındows)" is the cause of the exception.
The problem is the string "WINDOWS" is changed to lower case and it results "wındows" because of TR locale. I found that it is generated in class org.openqa.selenium.remote.http.HttpClientand added Locale.US like this.
String USER_AGENT = String.format(
"selenium/%s (java %s)",
new BuildInfo().getReleaseLabel(),
(Platform.getCurrent().family() == null ?
Platform.getCurrent().toString().toLowerCase(Locale.US) :
Platform.getCurrent().family().toString().toLowerCase(Locale.US)));
I compiled the library with my changes and it works now. I also opened a pull request on github.
You can also find my edited fork here.

driver.navigate().to("url") is not working in Chrome 64 and driver chrome 2.35;

I don't know what happened actually. Suddenly My Test step Do not pass.
public void gotoRolePage() {
driver.navigate().to("url");
}
public void gotoRolePage() {
driver.get("url");
}
Starting ChromeDriver 2.34.522940 (1a76f96f66e3ca7b8e57d503b4dd3bccfba87af1) on
port 10252
Only local connections are allowed.
Feb 11, 2018 12:54:41 PM org.openqa.selenium.remote.ProtocolHandshake createSess
ion
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the rem
ote end
Feb 11, 2018 12:54:45 PM org.openqa.selenium.remote.ProtocolHandshake createSess
ion
INFO: Detected dialect: OSS
[426.532][SEVERE]: Timed out receiving message from renderer: 299.935
[426.533][SEVERE]: Timed out receiving message from renderer: -0.001
[426.536][SEVERE]: Timed out receiving message from renderer: -0.004
I have tried both of this function. No Luck...It was working Perfectly Last day.
This is maven Project with cucumber
ChromeDriver 2.34.522940, and Chrome Version 64.0.3282.140 (Official Build) (64-bit)
At last, I am able to solve the issue by downgrade my chrome.
Now it's perfectly working like before with ChromeDriver 2.34.522940 (Chrome 63).
I've seen the same thing happening. I found that doing driver.get(url), and then doing another driver.get(url) in the same test method was the reason why. Very frustrating, but I also found that downgrading chrome worked.
I have updated today all my driver again.
Chrome Version 65.0.3325.181
And ChromeDriver 2.37.544315
till Now it's working fine.I think they solved the problem in new update
You can use this driver.get(url).

chrome is not able to run in Selenium Webdriver . i am using selenium 3.0.1 chrome v-54.0

public class sikuli {
public static void main(String[] args) throws Exception {
//Screen screen=new Screen();
//screen.click("//home//exeter//Pictures//googlechrome.png");
System.setProperty("webdriver.chrome.driver","//home//exeter//Documents//chromedriver");
WebDriver driver=new ChromeDriver();
driver.get("https://mail.google.com");
Starting ChromeDriver 2.24.417424 (c5c5ea873213ee72e3d0929b47482681555340c3) on port 11320
Only local connections are allowed.
Oct 19, 2016 10:07:22 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Oct 19, 2016 10:08:22 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Exception in thread "main" org.openqa.selenium.NoSuchSessionException: no such session
(Driver info: chromedriver=2.24.417424 (c5c5ea873213ee72e3d0929b47482681555340c3),platform=Linux 4.4.0-43-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 9 milliseconds
Build info: version: 'unknown', revision: '350cf60', time: '2016-10-13 10:43:56 -0700'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{message=unknown error: Chrome failed to start: exited abnormally
It looks like you are running on a Linux machine, so "chromedriver" (without .exe) should be fine. Just make sure you have the latest chrome and latest chrome driver versions, and also you have the correct "chromedriver" file (the one on 64 bits).
Please check path is correct for chrome driver version
https://chromedriver.chromium.org. you need use chrome driver according to which chrome browser version are using
If you are running on windows you need to specify .exe at the end too(Unless you are running on Linux)
On a side note try this https://github.com/bonigarcia/webdrivermanager. It will automatically download the driver for you based on your browser and OS. Managing the driver manually is just a waste of time in my opinion.

Unable to run correctly firefox portable with Selenium 3

I wrote a test in JUnit to launch Firefox with Selenium 3.0.1.
But I have a problem with Firefox Portable version. With Firefox installed on my machine I have not this problem.
My test is very simple :
public class SeleniumTest extends FluentTest {
WebDriver webDriver = new FirefoxDriver();
static {
// 1) Work with native Firefox
System.setProperty("webdriver.gecko.driver", ClassLoader.getSystemResource("webdriver/geckodriver_0.11.1.exe").getFile());
// 2) Don't work when I add these 2 properties
// System.setProperty("webdriver.firefox.marionette", "true");
// System.setProperty("webdriver.firefox.bin", "D:\\firefox-portable\\FirefoxPortablex64-48.0.2\\FirefoxPortable.exe");
}
#Test
public void test() {
System.out.println("test is executed");
}
}
In the case n°2, I add the properties necessary to run Firefox portable version but the test stays lock at the step "Connecting to Marionette on localhost:52702". And anything happens.
1478965841203 geckodriver INFO Listening on 127.0.0.1:45941
nov. 12, 2016 4:50:41 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFOS: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
1478965841598 mozprofile::profile INFO Using profile path d:\Profiles\<username>\AppData\Local\Temp\rust_mozprofile.TisH4gXwlj3K
1478967041359 geckodriver::marionette INFO Starting browser D:\firefox-portable\FirefoxPortablex64-48.0.2\FirefoxPortable.exe
1478967041388 geckodriver::marionette INFO Connecting to Marionette on localhost:52702
But with the native Firefox, I can see the next steps and the test is executed.
1478967281791 Marionette INFO Listening on port 53224
1478967283064 Marionette INFO startBrowser d3c2b382-5643-4149-9168-57fd36a43678
nov. 12, 2016 5:14:43 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFOS: Detected dialect: W3C
test is executed
Finally, I precise I want to use the Firefox portable edition to be more flexible and independant.
My env :
Jdk 8 / Selenium 3.0.1 / FluentLenium 3.0.2 / GeckoDriver 0.11.1 / Native Firefox : 49.0.2 / Firefox Portable edition : 48.0.2 and also 49.0
Any help will be appreciate.

Categories