所谓的浏览器无头模式, 就是浏览器的不可视化,不像我们一般情况下使用 selenium, 都会弹出浏览器, 然后在我们的视线下执行我们用代码写好的步骤.无头模式, 除了看不见浏览器,不会有其他的不同, 定位方法, 请求页面的方法等等都是一样的.但是我在使用的时候发现了一个 缺陷.

案例和缺陷

我发现, 使用无头浏览器模式的时候, 截图的整个页面的图片, 会只有页面上的一半, 图片下面有个滚动条, 但是滚动条拖拽没有反应; 如果用正常浏览器弹出来那个模式, 整个页面就可以完整截取下来, 图片左下角的导航条按钮拖拽也有反应, 能拖动到右边看完整个图片.(我猜测是我的电脑分辨率问题, 电脑显示器1920*1080分辨率, 文本应用占据项目 125%) 因此我把 显示器的显示调整了一下, 把125% 调整成 100%, 随后还是用可视化的方法截图一次, 图片就是完整显示,而且不需要在图片 下面拉动滚动条.
此时, 我在写爬12306的脚本, 由于这个网站的验证码图片 , 不能直接保存, 我就把整个页面给截图下来, 然后再把整个页面截图里验证码的部分给截取出来,计算 坐标系. 一开始我使用的是无头模式, 无头模式在截图整个页面就只能截取一半.然后换回可视化模式才解决.
这个原因, 我找到了, 应该是python 版本和某些三方库导致的的. 最近使用到一个开源的抢票工具, 我看到里面用的就是无头模式和 selenium 一起使用, 不过用的并不是scrapy 框架.

如何能过掉滑动到顶的那种滑动条, 12306案例

1
action.drag_and_drop_by_offset(element, x, y).perform()   

注意, x,y 是滚动条的像素, 一般我们要写上页面上看到的滚动条多加 10 像素, 这种滚动条是那种拖动到尽头就结束的滚动条.