在Selenium的屏幕截图中,标题栏出现在页面中间

时间:2015-10-15 00:11:22

标签: python selenium python-imaging-library

请参阅下面我尝试截图Facebook的地方。顶部栏通常位于浏览器的顶部,显示在屏幕截图的中间。

如何隐藏它,或者调整浏览器以使顶部栏保持不变?

我使用Selenium进行截图,然后将其发送给PIL进行裁剪。

请注意,出现这种情况时,我可能会向下滚动很多方式。

enter image description here

3 个答案:

答案 0 :(得分:4)

您可以通过此driver.execute_script("document.getElementById('blueBarNAXAnchor').setAttribute('class', '')")来操纵html代码,例如删除导航栏的class属性,然后它将保留在没有样式的页面的开头。然后你可以没有它截屏。请参阅下面的内容,查看face_1.png:

>>> driver.save_screenshot("face.png")
True
>>> driver.execute_script("document.getElementById('blueBarNAXAnchor').setAttribute('class', '')")
>>> driver.save_screenshot("face_1.png")
True

enter image description here

答案 1 :(得分:2)

可能与浏览器没有以最大尺寸打开的事实有关。

尝试在初始化时调用driver.maximize_window()一次,然后再使用driver.getdriver.save_screenshot

答案 2 :(得分:2)

您应该reduce窗口大小,而不是增加窗口大小。将窗口高度设置为小于500像素,并将顶部栏放在屏幕截图中。

这是因为当浏览器高度低于500px时,顶部栏会从视图中消失。在此高度之上,顶部栏显示在悬停在新闻源上的浏览器视图端口中。您也可以手动尝试。

<强> JAVA

driver.manage().window().setSize(new Dimension(1024, 500));

<强> PYTHON

driver.set_window_size(300, 500)

以上代码在JAVA中。但我相信你可以找出python的等价物。

注意:我的屏幕分辨率为1366x768。所以500px的值可能会有所不同。但你肯定要降低身高。