我正在使用PhantomJS截取网页的截图,其中包含page.render()方法,详见https://github.com/ariya/phantomjs/wiki/Screen-Capture.
除了背景图像,它工作正常 所有somtimes显得空白.如果您访问http://screener.brachium-system.net/并输入http://www.bing.com/作为URL,您可以看到问题的示例,背景图像应该有一个很大的空白区域是.
有没有办法强制显示背景图像?
有没有办法获得PhantomJS(或类似)正在渲染的实时视图?
我想在与其所针对的页面交互(或至少看到一个屏幕截图)的同时开发我的自动化脚本.
我正在使用一个必须部署在ubuntu服务器内的自动化工具,我不知道是否可以使用Selenium Webdriver以静默方式使用chrome.
到目前为止,我已经尝试了以下代码,但它一直打开浏览器(我在Windows 10中进行测试):
var webdriver = require('selenium-webdriver'),
chrome = require('selenium-webdriver/chrome')
By = webdriver.By,
until = webdriver.until,
options = new chrome.Options();
options.addArguments('--headless');
var path = require('chromedriver').path;
var service = new chrome.ServiceBuilder(path).build();
chrome.setDefaultService(service);
var driver = new webdriver.Builder().forBrowser('chrome').withCapabilities(options.toCapabilities()).build();
driver.get('https://www.google.com');
Run Code Online (Sandbox Code Playgroud)
请注意,addArguments(' - headless')是应该使导航无声的参数,但显然它不起作用或者我遗漏了一些我不知道的东西.
如果有一些我遗失的东西,请告诉我,因为我不知道我想做什么是可能的,因为这是我使用这种技术的第一次.
谢谢.
我想运行firefox无头.
不隐藏浏览器窗口或在虚拟桌面中打开它,Firefox通过使用"-headless"标志支持无头模式.
问题是我知道如何在Chrome中执行此操作但不在Firefox中.
我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
namespace MyApp {
public partial class Form1: Form {
public Form1() {
InitializeComponent();
}
private void StartBtn_Click(object sender, EventArgs e) {
IWebDriver driver;
FirefoxOptions options = new FirefoxOptions();
options.AddArguments("--headless");
driver = new FirefoxDriver(options);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的WinForm应用程序只有一个名为StartBtn的按钮.单击按钮时,Firefox应无头运行,但会在正常窗口中打开.
更新 我将firefox更新为56.0.1
现在我得到一个不同的错误:
WebDriver.dll中发生未处理的"OpenQA.Selenium.WebDriverException"类型异常
附加信息:预期的浏览器二进制位置,但无法在默认位置找到二进制文件,未提供'moz:firefoxOptions.binary'功能,并且在命令行上未设置二进制标志
我想使用 Puppeteer 从 HTML 字符串生成图像。现在我有这样的事情:
const html = _.template(`
<html>
<body>
<div class="testing">
<h1>Hello {{ test }}!</h1>
<img src="./1.jpg" alt="alt text" />
</div>
</body>
</html>
`)
const browser = await puppeteer.launch()
const page = await browser.newPage()
const data = html({
test: 'World'
})
await page.setContent(data)
const take = await page.$('.testing')
await take.screenshot({
path: 'screenshot.png',
omitBackground: true
})
Run Code Online (Sandbox Code Playgroud)
问题是,Puppeteer 不加载图像,我不知道如何将它指向他?该图像与脚本位于同一目录中。
除了图像,我想加载自定义字体,怎么做?
任何人都可以建议支持cookie和authomatically javascript执行的无头浏览器吗?
我想QWebKit用QWebEngine无头渲染器代替.我初始化页面load()并连接一个插槽loadFinished()以生成最终的.PNG图像.这曾经工作得很好,WebKit但失败了QWebEngine.
代码如下......
_webView = new QWebEngineView();
....
// Render the HTML to an image
QPainter painter(&image);
_webView->page()->view()->render(&painter);
painter.end();
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
"请求没有窗口句柄的窗口小部件的共享上下文""QOpenGLWidget:如果没有与toplevel共享的上下文,则不能使用".
有没有人有使用渲染屏幕的例子QWebEngine?
我目前正在使用PhantomJS和Karma运行测试来测试Angular.js应用程序.随着最近发布的ChromeHeadless,我们开始使用ChromeHeadless测试浏览器而不是默认的PhantomJS浏览器.
我目前安装了karma-chrome-launcher2.1.0.
当我运行我的测试时,我会遇到几个不同的错误,其中的提取列表如下:
Cannot start ChromeHeadless
[0510/113948.371837:ERROR:resource_bundle.cc(767)] Failed to load /Applications/Google Chrome.app/Contents/Versions/58.0.3029.110/Google Chrome Framework.framework/Versions/A/resources.pak
Some features may not be available.
ChromeHeadless stdout:
10 05 2017 11:39:48.428:ERROR [launcher]: ChromeHeadless stderr: [0510/113948.371837:ERROR:resource_bundle.cc(767)] Failed to load /Applications/Google Chrome.app/Contents/Versions/58.0.3029.110/Google Chrome Framework.framework/Versions/A/resources.pak
Some features may not be available.
ChromeHeadless stderr: [0510/113948.490917:ERROR:resource_bundle.cc(767)] Failed to load /Applications/Google Chrome.app/Contents/Versions/58.0.3029.110/Google Chrome Framework.framework/Versions/A/resources.pak
Some features may not be available.
ChromeHeadless failed 2 times (cannot start). Giving up.
npm ERR! Test failed. See above for more details.
Run Code Online (Sandbox Code Playgroud)
我曾尝试运行一些命令故宫,也就是npm …
我已经从developers.google中了解到有关Chrome Headless的信息,我们可以在没有用户界面的情况下运行Google.从该链接引用:
无头Chrome在Chrome 59中发布.这是在无头环境中运行Chrome浏览器的一种方式.基本上,运行没有铬的Chrome!它将Chromium和Blink渲染引擎提供的所有现代Web平台功能引入命令行.
为什么这有用?
无头浏览器是自动测试和服务器环境的绝佳工具,您不需要可见的UI shell.例如,您可能希望针对真实网页运行某些测试,创建PDF,或者仅检查浏览器如何呈现URL.
这是非常好的功能,所以我做了一些很酷的功能实验.想法是通过从Windows命令提示符调用chrome.exe来将快照作为文档站点,如下所示:
chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/
Run Code Online (Sandbox Code Playgroud)
做了几次并遵循这些网站的指示.我一无所获.我没有得到任何带有名称的图片或截图,screenshot.png因为之前提到过它Running with --screenshot will produce a file named screenshot.png in the current working directory.
从这份文件中也谈到版本,
警告:Chrome 59中的Mac和Linux上提供无头模式.Chrome 60中将提供Windows支持.要查看您的Chrome版本,请打开chrome:// version.
在使用之前的建议进行一些检查后,我chrome://version在Windows x64计算机上的Chrome上运行并获得了一些结果:
Google Chrome 62.0.3202.94 (Official Build) (64-bit) (cohort: Stable)
Revision 4fd852a98d66564c88736c017b0a0b0478e885ad-refs/branch-heads/3202@{#789}
Run Code Online (Sandbox Code Playgroud)
怎么了?我错过了什么?谢谢
我目前正在使用 Specflow 运行 Selenium。
我的一个测试点击了一个按钮,触发了 pdf 文件的下载。该文件会在新选项卡中自动打开,然后测试会在其中获取 url 并将引用的文件直接下载到 selenium 项目。当 chrome 驱动程序正常运行但在无头浏览器上失败并出现以下错误时,整个过程完美运行:
到远程 WebDriver 服务器的 URL http://localhost:59658/session/c72cd9679ae5f713a6c857b80c3515e4/url的 HTTP 请求在 60 秒后超时。-> 请求已中止:操作已超时。
尝试运行时出现此错误 driver.Url
driver.Url在代码中的其他地方调用工作。只有在无头浏览器切换选项卡后才会失败。(是的,我正在使用驱动程序切换窗口)
作为参考,如果不单击第一页上的按钮并切换选项卡,我将无法获取此 url,因为该 url 是在单击按钮后自动生成的。
selenium headless-browser selenium-chromedriver selenium-webdriver google-chrome-headless
headless-browser ×10
c# ×2
headless ×2
phantomjs ×2
selenium ×2
.net ×1
browser ×1
firefox ×1
javascript ×1
karma-runner ×1
node.js ×1
puppeteer ×1
qt ×1
qtwebengine ×1
qwebkit ×1
webclient ×1