提高 AWS 实例中硒测试的屏幕分辨率
Posted
技术标签:
【中文标题】提高 AWS 实例中硒测试的屏幕分辨率【英文标题】:Increasing screen resolution for selenium test in AWS instance 【发布时间】:2017-12-20 12:13:09 【问题描述】:我正在使用竹子进行硒测试。在竹子中,我使用的是弹性代理,它是一个 aws 实例 - windows 2012。默认情况下,代理的屏幕分辨率为 1024x768。我只是想提高屏幕分辨率。
是否可以在创建 ami 的过程中或在启动代理之后增加屏幕分辨率?
任何帮助将不胜感激。谢谢。
【问题讨论】:
forums.aws.amazon.com/thread.jspa?threadID=148846 ***.com/questions/20178032/… 在无头 Chrome 中运行它不依赖于屏幕分辨率。 【参考方案1】:对于这个确切的场景,我可以想出一个解决方法 --
问题在于,除非您使用 RDP 进行连接,否则 AWS EC2 实例会使用默认的基本图形适配器,其最大分辨率为 1024x768。 尝试通过 Selenium 设置浏览器大小将不起作用,因为浏览器窗口将自动调整为最大桌面分辨率大小。
但是,您可以这样做: 在测试运行期间打开浏览器后,您可以调用非托管代码并通过 user32.dll 中的方法设置浏览器窗口的大小,该方法带有阻止 Windows 自动将浏览器窗口大小调整回最大桌面分辨率大小的标志。
代码如下(部分摘自pinvoke.net)。这是一个 C# 示例,但可以重新设计为其他类型的解决方案,以便从您的框架中调用。
在框架内某处的类中,放置以下内容,然后在代码中实例化浏览器窗口,只需调用 SetBrowserLocAndSize 方法即可:
// Windows Interop Screen window position setter extern method
[DllImport("user32.dll", SetLastError = true)]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
public static void SetBrowserLocAndSize(string windowTitle, int x, int y, int width, int height)
var proc = Process.GetProcesses().FirstOrDefault(p => p.MainWindowTitle.Contains(windowTitle));
if(proc == null)
throw new NotFoundException($"Could not find a window containing a window title of 'windowTitle'");
var hwnd = proc.MainWindowHandle;
// See https://www.pinvoke.net/default.aspx/user32.setwindowpos for information on this method
SetWindowPos(hwnd, new IntPtr(0), x, y, width, height, 0x0100 | 0x0400 | 0x0040);
【讨论】:
以上是关于提高 AWS 实例中硒测试的屏幕分辨率的主要内容,如果未能解决你的问题,请参考以下文章