This bounty has ended. Answers to this question are eligible for a +50 reputation bounty. Bounty grace period ends in 3 hours.
Onur Topal wants to draw more attention to this question:
for some reason, selenium does not show the browser but looks like working fine. I can hear the audio it is playing and can retrieve HTML elements from driver and execute scripts.
I am using the below code to open a selenium driver with Chrome.
The first problem is --allow-file-access-from-files flag is not working at all either with debug mode or release mode.
Also, the main problem is when I publish my code with release mode and deploy another machine (Win 10 Pro) the app does not show the browser.
Edit: I think this is not clear selenium working fine but is hidden in some cases we need to display it for user input.
I also have an issue to play audio files automatically and the solutions I found on the internet are not working as well. Throwing JS error saying no click detected.
Is there a way to open a browser with full control? another browser for example firefox etc.
public static IWebDriver GetHeadless()
{
ChromeOptions cOptions = new ChromeOptions();
cOptions.AddArgument("user-agent=SeleniumTests");
cOptions.AddArgument("--allow-file-access-from-files");
//cOptions.AddArgument("--headless");
return new ChromeDriver(cOptions);
}
Thanks
I've heen recently using Coypu (https://github.com/featurist/coypu) for some web pages automation and it's great for that, if you need UI. But I wonder if I could do it on a headless browser, afaik Copyu supports only GUI browsers out of the box and I dont see any options to set headless mode.
Is it possible with default browsers or should I add some by myself (for example PhantomJS), and how could I do that?
I am writing a script in Selenium WebDriver using C#. I want to run this script in the background or minimize mode. I don't want to display the browser to the user. I tried the Chrome Options class and its properties to accomplish the task but unable to do that.
What could be the best approach of running the selenium script in the
background or minimize mode in Selenium WebDriver using C#?
To minimize:
driver.Manage().Window.Size = new Size(-2000, 0);
To background use a headless webdriver:
WebDriver htmlUnitDriver = new HtmlUnitDriver();
Or for Headless Chrome, see here, it's not a simple solution though.
Best approach: depends on your case. For testing a web app use Chrome minimized. For scraping, use a headless browser.
I want to check if Internet Explorer window is in fullscreen mode or not?
I use driver.Manage().Window.Maximize();
It maximizes window only but does not switched to FullScreen view.
Is there any method?
Selenium web driver do not have the API to achieve the Full screen as per your post. But you can achieve it through send keys method of windows. Try below code.
System.Windows.Forms.SendKeys.SendWait("{F11}");
#Sham: that is a unique way to do it... I would recommend this:
driver.Manage().Window().Maximize(); after window braces should be added
I run Firefox (default browser) from C# with the code:
System.Diagnostics.Process.Start(browser.Document.Url.ToString());
I want Firefox to run in the background, because every time is open a new tab, the Windows is focusing on the Firefox, and is annoying.
How can I control Firefox tabs, close them after a time ?
You can use a ProcessStartInfo to tell it to run hidden or minimized or whatever. Not sure how to programmatically manipulate FireFox but I'm sure there's an API.
var psi = new System.Diagnostics.ProcessStartInfo();
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
psi.FileName = browser.Document.Url.ToString();
var proc = System.Diagnostics.Process.Start(psi);
//after a while...
proc.Kill();
Technically, you are not starting Firefox, you are executing a url.
I'm not sure exactly what Windows does, but in effect, that url is opened in the system's default browser, be it IE, FF or some other thing that might not even support tabs, so finding and killing Firefox is not really a solution if the url is opened in Opera.
Moreover, the Process.Start method returns null if no process is actually started by the call, so if Firefox is already running and just displays an additional tab, you will get a null as the result of the call.
So, I'm pretty sure this is impossible to do in a broad sence (any browser), and, unless Firefox has some sort of API for client-side management, not possible for that scenario either.
BTW, on my system (IE is the default browser), the WindowStyle property is not working as expected, as IE pops up to the front.
Rather than trimming the tabs, why not just kill the entire Firefox process and restart it periodically?
You won't be able to do this. First of all, I'm pretty sure running Firefox in the background won't stop it gaining focus when a new tab is opened. Second, it is difficult to control firefox programmatically. The only way to do what you want is to use a plugin like MozRepl. You could also try using selenium or your own JavaScript to control the browser behaviour. I needed to be able to open and close tabs in a shell script without using selenium or MozRepl, check out my question From a shell script open a new tab in a specific instance of Firefox