标签: headless-browser

Selenium是否支持无头浏览器测试?

我现在正在看Selenium Server,我似乎没有注意到支持无头浏览器测试的驱动程序.

除非我弄错了,否则它不支持它.如果你在X上,你可以创建一个虚拟帧缓冲来隐藏浏览器窗口,但这不是一个真正的无头浏览器.

任何人都可以开导我吗?Selenium是否支持无头浏览器测试?

selenium automated-tests unit-testing headless-browser selenium-webdriver

70
推荐指数
5
解决办法
5万
查看次数

无头互联网浏览器?

我想做以下几点.登录网站,单击几个特定链接,然后单击下载链接.我想将它作为Windows上的计划任务或Linux上的cron作业运行.我对我使用的语言并不挑剔,但我希望如果可能的话,不要在屏幕上放置浏览器窗口.

automation webautomation headless-browser

69
推荐指数
3
解决办法
7万
查看次数

检测从JavaScript无头模式运行的Chrome

随着Chrome 59的发布,"无头"模式现在可用于Linux和macOS的稳定版本(很快就会推出带有Chrome 60的Windows).这使我们可以在没有任何可见UI的情况下运行功能齐全的Chrome版本,具有自动化测试的强大功能.这是一些例子.

chrome --headless --disable-gpu --dump-dom https://stackoverflow.com/
Run Code Online (Sandbox Code Playgroud)

在我的JavaScript测试运行器中,我喜欢尽可能多地记录有关正在使用的浏览器的信息,以帮助隔离问题.例如,我记录了许多属性navigator,包括当前的浏览器插件:

JSON.stringify(Array.from(navigator.plugins).map(p => p.name))
Run Code Online (Sandbox Code Playgroud)
["Chrome PDF Viewer","Widevine Content Decryption Module","Shockwave Flash","Native Client","Chrome PDF Viewer"]
Run Code Online (Sandbox Code Playgroud)

我的理解是Chrome 应该在无头模式下表现相同,但我有足够的经验对可能会显着改变渲染管道的新功能持怀疑态度.

现在,我将在两种模式下运行测试.我想让测试运行器记录是否正在使用无头模式.我可以在测试配置中传递这些信息,但我宁愿拥有一个纯JavaScript解决方案,我可以将其构建到测试运行器本身.但是,我无法找到任何显示无头模式是否处于活动状态的浏览器界面.

有没有办法检测Chrome是否在JavaScript无头模式下运行?

javascript google-chrome headless-browser

53
推荐指数
5
解决办法
6840
查看次数

用于Python的无头浏览器(需要Javascript支持!)

我需要一个相当容易使用的无头浏览器(我仍然是相当新的Python和一般的编程),这将允许我导航到一个页面,登录到需要Javascript的表单,然后通过以下方式刮擦生成的网页搜索符合特定条件的结果,单击复选框,然后单击以下载文件.所有这些都需要Javascript.

我听到无头浏览器是我想要的 - 需求/偏好是我能够从Python运行它,并且最好是生成的脚本可以通过py2exe编译(我正在为其他用户编写这个程序).

到目前为止风车看起来很像我想要的,但我不确定.

任何想法赞赏!

javascript python screen-scraping headless-browser

52
推荐指数
4
解决办法
4万
查看次数

执行页面的javascript后保存页面的html输出

有一个我试图抓取的网站,首先加载一个html/js使用js然后POST修改表单输入字段.如何获取POSTed页面的最终html输出?

我尝试用phantomjs做这个,但它似乎只有渲染图像文件的选项.谷歌搜索表明它应该是可能的,但我无法弄清楚如何.我的尝试:

var page = require('webpage').create();
var fs = require('fs');
page.open('https://www.somesite.com/page.aspx', function () {
    page.evaluate(function(){

    });

    page.render('export.png');
    fs.write('1.html', page.content, 'w');
    phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)

这段代码将用于客户端,我不能指望他安装太多的包(nodejs,casperjs等)

谢谢

javascript headless-browser phantomjs

49
推荐指数
2
解决办法
5万
查看次数

Linux上无头,可编写脚本的Firefox/Webkit?

我希望自动化一些网络交互,即从安全网站定期下载文件.这主要涉及输入我的用户名/密码并导航到相应的URL.

我在Python中尝试过简单的脚本,然后是更复杂的脚本,只是发现这个特定的网站正在使用一些讨厌的基于javascript和flash的机制进行登录,渲染我的方法毫无用处.

然后我尝试了HTMLUnit,但这似乎也不想工作.我怀疑使用Flash是个问题.

我真的不想再考虑它,所以我倾向于编写一个实际的浏览器脚本来登录并获取我需要的文件.

要求是:

  • 在linux服务器上运行(即没有X运行).如果我真的需要让XI能够做到这一点,但我不会高兴.
  • 要可靠.我想开始这件事,再也不去想它了.
  • 可编写脚本.没有什么太复杂,但我应该能够告诉浏览器采取的各种步骤和访问页面.

对于无头,无X脚本的浏览器,有什么好的工具包吗?你有没有尝试过这样的事情?如果有的话,你有没有任何智慧的话语?

firefox screen-scraping webkit headless-browser

45
推荐指数
4
解决办法
2万
查看次数

如何在Windows 10上的Chrome 60中使用Headless Chrome?

我一直在查看以下关于无头Chrome的文章:https:
//developers.google.com/web/updates/2017/04/headless-chrome

我刚刚将Windows 10上的Chrome升级到版本60,但是当我从命令行运行以下任一命令时,似乎没有任何事情发生:

chrome --headless --disable-gpu --dump-dom https://www.google.com/
chrome --headless --disable-gpu --print-to-pdf https://www.google.com/
Run Code Online (Sandbox Code Playgroud)

我从以下路径运行所有这些命令(Windows上Chrome的默认安装路径):

C:\Program Files (x86)\Google\Chrome\Application\
Run Code Online (Sandbox Code Playgroud)

当我运行命令时,某些东西似乎处理了一秒钟,但我实际上看不到任何东西.我究竟做错了什么?
谢谢.


编辑:

正如马克Rajcok指出,如果添加--enable-logging--dump-dom命令,它的工作原理.此外,该--print-to-pdf命令在Chrome 61.0.3163.79中也可以正常工作,但您可能必须为输出文件指定不同的路径才能拥有保存它的必要权限.

因此,以下两个命令对我有用:

"C:\Program Files (x86)\Google\Chrome\Application\chrome" --headless --disable-gpu --enable-logging --dump-dom https://www.google.com/
"C:\Program Files (x86)\Google\Chrome\Application\chrome" --headless --disable-gpu --print-to-pdf=D:\output.pdf https://www.google.com/
Run Code Online (Sandbox Code Playgroud)

我想下一步是能够像使用DOM选择器和诸如此类的PhantomJS一样逐步执行转储的DOM,但我认为这是一个单独的问题.


编辑#2:

对于它的价值,我最近遇到了一个名为Puppeteer(https://github.com/GoogleChrome/puppeteer)的无头Chrome节点API ,它非常易于使用,并提供无头Chrome的所有功能.如果您正在寻找一种使用Headless Chrome的简便方法,我强烈推荐它.

command-line google-chrome headless-browser windows-10 google-chrome-headless

42
推荐指数
4
解决办法
2万
查看次数

为什么Node.js没有原生DOM?

当我发现Node.js是使用V8 JavaScript引擎构建的时候,我想:

很棒,网页抓取会更容易,因为页面将像在浏览器中一样呈现,其中"本机"DOM支持XPath并且页面上的任何AJAX调用都已执行.

  1. 当它使用与Chrome相同的JavaScript引擎时,为什么它没有原生DOM?
  2. 为什么它没有在检索到的页面中运行JavaScript的模式?
  3. 我不了解JavaScript引擎与Web浏览器中的引擎有什么关系?

非常感谢!

javascript dom v8 node.js headless-browser

40
推荐指数
4
解决办法
3万
查看次数

使用`google-chrome --headless`时如何设置浏览器窗口大小?

尝试--headless使用Selenium webdriver命令在chrome上设置浏览器大小.

我得到这个webdriver错误:

      - Failed: unknown error: cannot get automation extension
from unknown error: page could not be found: chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html
  (Session info: headless chrome=58.0.3029.81)
  (Driver info: chromedriver=2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5),platform=Linux 4.4.0-72-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 10.07 seconds
Build info: version: '3.3.1', revision: '5234b32', time: '2017-03-10 09:04:52 -0800'
System info: host: '826f6a766112', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-72-generic', java.version: '1.8.0_121'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.29.461571 …
Run Code Online (Sandbox Code Playgroud)

google-chrome headless headless-browser selenium-webdriver

35
推荐指数
2
解决办法
3万
查看次数

无头node.js javascript浏览器具有截屏功能?

是否有任何无头浏览器支持将呈现的页面转储到文件中的node.js?我知道phantomjs支持渲染到文件,但它不能在node.js上运行.我知道zombie.js是一个node.js无头浏览器,但它不支持渲染到文件.

javascript browser node.js headless-browser

31
推荐指数
3
解决办法
2万
查看次数