我需要覆盖屏幕对象。 我在这里How do I override window.screen?和http://phantomjs.org/api/webpage/handler/on-initialized.html使用了这些例子 但我的代码不起作用。
PhantomJSDriver phantom = new PhantomJSDriver(caps);
phantom.executePhantomJS("onInitialized = function() {\n" +
" evaluate(function() {\n" +
" window.screen.availWidth = 1024;\n" +
" window.screen.availHeight = 768;\n" +
" });\n" +
"};");
System.out.println(phantom.executeScript("return window.screen;"));
phantom.get("http://www.browserleaks.com/javascript");
System.out.println(phantom.executeScript("return window.screen;"));
这是我的控制台输出:
{availWidth=1440, pixelDepth=32, availTop=0, width=1440, colorDepth=32, availLeft=0, availHeight=860, height=900}
{availWidth=1440, pixelDepth=32, availTop=0, width=1440, colorDepth=32, availLeft=0, availHeight=860, height=900}
注意这一行:
webDriver.manage().window().setSize(new Dimension(980, 1461));
仅更改屏幕对象中的availWidth
和availHeight
属性。
有人可以建议我如何覆盖屏幕对象中的所有属性吗?