Currently, I'm running Selenium v4 locally on a normal PC with a graphics card and monitor. However, in production, I plan on running Selenium on a server that does not have a monitor.
When I call: driver.maximize() it maximizes the browser the the same height as the monitor/display. What behavior can I expect in production when the server does not have a display/monitor? How big will it maximize the window?
Update
I know you could run Selenium in headless mode but this is not my question. My question is how does Selenium/WebDriver maximize the size of the browser in this case, when it normally uses the size of the monitor/display to do so? What reference point is it using?
From the Resizing and positioning windows section of the WebDriver specification:
To maximize the window, given an operating system level window with an
associated top-level browsing context, run the implementation-specific
steps to transition the operating system level window into the
maximized window state. If the window manager supports window resizing
but does not have a concept of window maximization, the window
dimensions must be increased to the maximum available size permitted
by the window manager for the current screen. Return when the window
has completed the transition, or within an implementation-defined
timeout.
In short, executing Selenium based tests on a server that does not have a monitor using driver.maximize(), the command invokes the window manager-specific maximize operation, if any, on the window containing the current top-level browsing context. This typically increases the window to the maximum available size without going full-screen.
You could try using get_window_size to get the size of the maximized window in headless mode.
Related
I have a test that opens a new window when the button is clicked but the window is not maximized. I switched to the current window and use the await t.maximizeWindow() but the target window still not maximized.
At the moment, support for multiple browser windows is a beta feature and has several limitations. So, you cannot resize child windows or take screenshots or videos of them.
You can find more information in the TestCafe documentation: https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/multiple-browser-windows.html
I'm using gnome in RHEL 6.4 and I've created a desktop launcher to open a terminal window to present data from a flatfile to a user (actually the launcher opens a terminal window and executes a script file, which will present the data to the users). The data is about 650 characters wide.
I've tried two concepts that I could think of, but in both cases have been limited by (presumably) the window manager itself:
xterm -geometry 650x25 -e /path/to/my/script.sh &
and resize -s 25 650 from within the /path/to/my/script.sh
Both will make the xterm the size of the actual desktop (with my current resolution, approximately only about 300 characters wide).
This causes a problem when presenting the data in the script.sh due to word wrapping.
My current workaround is to prompt the user to resize the window manually before presenting the data to them...
Is there a way to open up the terminal window to the specified size, regardless of the current size of the gnome window? Or better yet, is there a way to use the resize the window after launch (ala resize -s ); this would be preferred as there are two types of files to present to the user. One is only 450 characters wide, and the other is 650. I would love to be able to start up at 450, and if the longer file is selected, change the window to 650.
(Of Note, I recall the Solaris Java Desktop had this behavior by default; but this behavior is typically undesirable other than in the instance described above; therefore I do not want to change the default behavior of the window manager for all windows; just on the terminal window launched with the desktop launcher!)
Appreciate any ideas!
Thanks,
KSL.
Is it possible to run an arbitrary OS program on the selenium node before running tests?
Why I need such a weird thing:
In one test of the web application I need to simulate mouseover for 1 second, but the thing is - if there is a mouse pointer over the browser window then selenium webdriver doesn't keep mouseover event for long time. It's getting interrupted after several milliseconds and after that the real mouse pointer starts emitting the mouseover event.
So what I'd like to try is to run a trivial program that moves mouse cursor to the screen corner to not interfere with browser window.
Any ideas?
UPD: created a trivial app to run before starting a particular driver that would move cursor to the corner: https://github.com/zerkms/MoveCursor
I'm using IE8 and webdriver.
The problem I have is every time webdriver runs I can't touch my computer. Basically the moment I click on a different window it stops working.
Because of this I can't run my code in debug mode with break point because I every time I go to Eclipse to manually execute the break point webdriver doesn't work anymore because IE8 is not selected.
With Firefox I'm able to do whatever I want but not with IE8. Is there anyway I can fix this problem with IE8?
Thank you!
The short answer is, "No, you can't fix this problem with IE at the moment." There are a number of reasons why window focus is incredibly important with the IE driver. The biggest reason is that you're using so-called "native events" when you're using the IE driver, which simulates mouse and keyboard events at the operating system level rather than just within the browser using, say, JavaScript, and the way IE processes native events is sometimes compromised if the browser window doesn't have focus. More information can be found in a presentation given at the 2012 Selenium Conference.
One approach to solving the problem would be to disable native events with the IE driver. Unfortunately, the simulated events aren't ready for normal use.
I am testing an application to test that must run in Selenium's single window mode. Multi window mode is not an option.
The problem is Selenium's frame takes a big chunk of the browser window.
How can I have the application frame expand to fill the browser window (and/or shrink the selenium part)?
Test code is in python.
Short of using Selenium.RunScript() to run some JavaScript code that adjusts the dimensions of each frame, you can't.
From the selenium API doc:
window_maximize(self, windowName)
Resize window to take up the entire screen
'windowName' is name of the window to be enlarged