Hello,
how exactly should I resize the browser window in test complete?
I tried it with BrowserWindow.Position(0,0,width,1000) in a function where I give the width as parameter ... But it sets the window size to idk 1697 or something rather than my 1710 I sent to the function.
Is there a better way to resize the BrowserWindow during runtime?
Solved! Go to Solution.
Hi,
So far I ended-up with this code. Hopefully it will work for you as well...
//---------------------------------------------------------------------------- // Sets the size of browser's viewport function BrowserViewportSizeSet(page, iWidth, iHeight) { var wnd; var iBorderWidth, iBorderHeight; var iWinWidth, iWinHeight; var res; wnd = BrowserWindowByPageGet(page); iBorderWidth = wnd.Width - page.Width; iBorderHeight = wnd.Height - page.Height; iWinWidth = iWidth + iBorderWidth; iWinHeight = iHeight + iBorderHeight; Log.Message(aqString.Format("Set browser\'s viewport size to %ix%i (window size is %ix%i)", iWidth, iHeight, iWinWidth, iWinHeight), aqString.Format("%ix%i\n%ix%i", iWidth, iHeight, iWinWidth, iWinHeight)); res = (iWinWidth > Sys.Desktop.Width) || (iWinHeight > Sys.Desktop.Height); if (res) Log.Warning(aqString.Format("Viewport size was not changed as it exceeds current size of the desktop (%ix%i)", Sys.Desktop.Width, Sys.Desktop.Height)); else { if ((wnd.Width != iWinWidth) || (wnd.Height != iWinHeight)) wnd.Position(0, 0, iWinWidth, iWinHeight); } return res; } //---------------------------------------------------------------------------- // Returns BrowserWindow object that corresponds to the given page object // From: http://smartbear.com/forums/f75/t83264/how-to-match-a-page-object-to-its-browserwindow function BrowserWindowByPageGet(Page) { var title; var wnd; // wnd = Utils.CreateStubObject(); // Utils is not accessible from Script Extension wnd = null; if (Page.Exists) if ("Page" == Page.ObjectType) { if ('edge' == Page.Parent.ObjectIdentifier) wnd = Page.Parent.BrowserWindow(0); // quick crutch else { title = Page.contentDocument.title; wnd = Page.Parent.FindChild("WndCaption", title + "*"); } } return wnd; } //----------------------------------------------------------------------------
I interested in this as well.
Question: Are you trying to set it to a particular size? Or are you trying to maximize it? Trying to determine the purpose for altering the browser window size because there may be other options than setting to a particular size.
We are testing a web application with ~20 breakpoints at different px width sizes.
therefore I need to set it to specific sizes 15 exactly.
The height I just took fixed on 1000 but the width changes depending on the test.
So maximizing is no option, I even need to restore it before as it sometimes opens the browser maximized, which doesnt allow .Position
Browsers.Item(bws).Run(url)
Sys.Browser.BrowserWindow(0).Maximize
sadly i cant remove answers ...
@kaiiii wrote:Browsers.Item(bws).Run(url)
Sys.Browser.BrowserWindow(0).Maximize
thx for not reading the question, still looking for an answer
Hi,
So far I ended-up with this code. Hopefully it will work for you as well...
//---------------------------------------------------------------------------- // Sets the size of browser's viewport function BrowserViewportSizeSet(page, iWidth, iHeight) { var wnd; var iBorderWidth, iBorderHeight; var iWinWidth, iWinHeight; var res; wnd = BrowserWindowByPageGet(page); iBorderWidth = wnd.Width - page.Width; iBorderHeight = wnd.Height - page.Height; iWinWidth = iWidth + iBorderWidth; iWinHeight = iHeight + iBorderHeight; Log.Message(aqString.Format("Set browser\'s viewport size to %ix%i (window size is %ix%i)", iWidth, iHeight, iWinWidth, iWinHeight), aqString.Format("%ix%i\n%ix%i", iWidth, iHeight, iWinWidth, iWinHeight)); res = (iWinWidth > Sys.Desktop.Width) || (iWinHeight > Sys.Desktop.Height); if (res) Log.Warning(aqString.Format("Viewport size was not changed as it exceeds current size of the desktop (%ix%i)", Sys.Desktop.Width, Sys.Desktop.Height)); else { if ((wnd.Width != iWinWidth) || (wnd.Height != iWinHeight)) wnd.Position(0, 0, iWinWidth, iWinHeight); } return res; } //---------------------------------------------------------------------------- // Returns BrowserWindow object that corresponds to the given page object // From: http://smartbear.com/forums/f75/t83264/how-to-match-a-page-object-to-its-browserwindow function BrowserWindowByPageGet(Page) { var title; var wnd; // wnd = Utils.CreateStubObject(); // Utils is not accessible from Script Extension wnd = null; if (Page.Exists) if ("Page" == Page.ObjectType) { if ('edge' == Page.Parent.ObjectIdentifier) wnd = Page.Parent.BrowserWindow(0); // quick crutch else { title = Page.contentDocument.title; wnd = Page.Parent.FindChild("WndCaption", title + "*"); } } return wnd; } //----------------------------------------------------------------------------
In the end your solution uses .Position
and for me it doesnt set the real resolutions when i set 1710 width the screen is ~1690-1700
Not sure why, tho - the screen size is definitely bigger than the width i want to set
Hi,
.Position() is the only way to change the size of the window according to my knowledge.
The general approach is that .Page is one of the objects within the Window container. So you need to count the width and height of all other objects within the same Window and set Window's size so that after resizing the size of Page (because it is my understanding that you are interested exactly in the viewport size, but not in the size of the window) is exactly as you need.
Depending on the target browser, you may need to use Object Browser to investigate what other objects need to be considered.
Ok ... I guess thats really what I need, as i just saw, that it is the border problem...
I will try it out with the script (trying to migrate it to python ^^) and test if it works
Subject | Author | Latest Post |
---|---|---|