2

我正在尝试在加载时执行 javascript

如果脚本会进行以下更改,我正在尝试实现可以​​实现的效果

<script type="text/javascript">
    window.screen.__defineGetter__('width', function(){return 1024;});
    window.screen.__defineGetter__('height', function(){return 768;});
</script>

但是,我不能将此 javascript 放在页面中,它们必须来自 Ruby,除了window.widthwindow.screen

driver = Selenium::WebDriver.for :firefox, :profile => profile
driver.execute_script("window.screen.__defineGetter__('height', function(){return 768;});") # this executes before page load starts
driver.navigate.to 'http://somesite.com/'
driver.execute_script("window.screen.__defineGetter__('height', function(){return 768;});") # this executes after page completely loads

所以,我想做的是执行例如

driver.execute_script("window.screen.__defineGetter__('height', function(){return 768;});")

navigate.to当页面加载时,如果我将它放在之前或之后,它就不起作用navigate.to.navigate.to同样是如果我改变.get

4

1 回答 1

2

不幸的是,这行不通。原因很简单,您之前注入的任何内容都将在navigate.to与目标页面不同的页面上执行。之后注入的任何东西navigate.to很可能会在您的应用程序启动后执行。

如果您想获得特定的窗口大小,可以在导航到页面之前设置它:( driver.manage.window.resize_to("1024", "768")对于 chrome 浏览器)或创建一个单独的 Firefox 配置文件,具有预定义的窗口宽度和高度,并在您的测试中使用它。

于 2014-03-18T14:25:16.187 回答