标签: headless-browser

可以使用chrome无头浏览器来保存包含资源的完整网页吗?

我希望使用chrome无头浏览器复制"另存为"功能,以保存包含所有资源的完整网页.有没有办法做到这一点?我尝试了--print-to-pdf和--screenshot选项,并期待探索"另存为"选项.

google-chrome headless headless-browser google-chrome-headless

11
推荐指数
1
解决办法
450
查看次数

如何正确配置Selenium Maven插件以与Xvfb一起运行无头

背景:
我正在使用selenium-server-2.25.0与J-Unit 4一起为我的GWT应用程序运行一些UI测试场景.在我的IDE(Netbeans 7.2)中,我可以右键单击我的项目,选择"Test",然后看到Firefox窗口全部弹出(因为它们应该),Selenium测试按预期运行.从命令行,我也可以运行mvn integration-test并查看相同的内容.

目标:
我正在尝试让这些测试在Xvfb显示器中无头运行,但我似乎无法将其与Maven一起使用.我可以export display=:2事先手动运行(:2是我的Xvfb显示),然后测试然后DO在隐形显示中成功运行.

问题:
似乎没有任何改变当我包括完整的<plugin>从入门这里在我的pom.xml和运行mvn integration-test.我仍然看到Windows全部弹出,测试运行不在 Xvfb显示器中.如果我把它取出并再次运行,结果相同.当我从改变相位pre-integration-test,以qwertyasdf然而,Maven的并不抱怨无效的生命周期阶段-所以我知道它不是完全无视它,我编辑相应的pom.xml.

谢谢!

selenium maven headless-browser xvfb selenium-webdriver

10
推荐指数
1
解决办法
6276
查看次数

支持HTML 5视频的无头浏览器?

我需要自动化HTML 5视频播放器页面及其缩略图的屏幕截图,但在查看一些比较流行的无头浏览器(如PhantomJS)后,它们不支持HTML 5视频.

>phantomjs examples\features.js
Detected features (using Modernizr 2.0.6):

Supported:
  touch
  generatedcontent
  fontface
  flexbox
  canvas
  canvastext
  postmessage
  websqldatabase
  hashchange
  history
  draganddrop
  websockets
  rgba
  hsla
  multiplebgs
  backgroundsize
  borderimage
  borderradius
  boxshadow
  textshadow
  opacity
  cssanimations
  csscolumns
  cssgradients
  cssreflections
  csstransforms
  csstransitions
  localstorage
  sessionstorage
  webworkers
  applicationcache
  svg
  inlinesvg
  smil
  svgclippaths

Not supported:
  csstransforms3d
  webgl
  geolocation
  indexeddb
  video
  audio
Run Code Online (Sandbox Code Playgroud)

需要注意的是HTML 5视频不支持上面,什么轻便无头的浏览器DOES支持HTML 5视频?

html video headless-browser

10
推荐指数
1
解决办法
1892
查看次数

在继续之前,页面不会等待另一页完成任务

所以这是代码片段:

    for (let item of items)
    {
        await page.waitFor(10000)
        await page.click("#item_"+item)
        await page.click("#i"+item)

        let pages = await browser.pages()
        let tempPage = pages[pages.length-1]

        await tempPage.waitFor("a.orange", {timeout: 60000, visible: true})
        await tempPage.click("a.orange")

        counter++
    }
Run Code Online (Sandbox Code Playgroud)

page并且tempPage是两个不同的页面.

会发生什么是page等待10秒,然后点击一些东西,这会打开第二页.

应该发生的是tempPage等待一个元素,点击它,然后页面应该等待10秒再重复一遍.

然而,实际发生的是page等待10秒,点击这些东西,然后开始等待10秒而不等待tempPage完成其任务.

这是一个错误,还是我误解了什么?我应该如何解决这个问题,以便当for循环再次循环时,它只在tempPage点击之后.

node.js headless-browser puppeteer

10
推荐指数
1
解决办法
669
查看次数

无头浏览器检测

您是否知道任何试图检测用户是否使用 selenium/puppeteer/phantomJS 或任何其他无头浏览器的 web 应用程序/在线测试/在线防火墙?

我已经创建了我的 puppeteer 在线爬虫。我改变了很多不同的东西,比如window.navigator对象(用户代理、~.webdriver 等)。

现在我想确保它是不可检测的。

selenium webdriver headless-browser phantomjs puppeteer

10
推荐指数
1
解决办法
1万
查看次数

PhantomJS,但不是无头?

有没有办法获得PhantomJS(或类似)正在渲染的实时视图?

我想在与其所针对的页面交互(或至少看到一个屏幕截图)的同时开发我的自动化脚本.

headless-browser phantomjs

9
推荐指数
1
解决办法
3636
查看次数

最简单的方法是使用Python Google API进行身份验证,以访问自己的帐户

主要用例是使用IPython作为我自己的Google帐户的CLI.我真正追求的是在启动IPython shell和实际发出针对API的有用调用之间的大小调整.

使用Google API进行身份验证的文档侧重于设置其他用户将用于访问其数据的应用程序.这导致了一个涉及浏览器的冗长的Oauth舞蹈,以便允许其他用户在不损害其凭证的情况下进行身份验证.但是,我不介意与自己分享我的私人凭证.我不打算分享代码.如果我确实共享了代码,我会使用类似的dotenv方法将凭据与代码分开.

Twitter为开发人员提供了第二组凭据,允许开发人员访问自己的帐户进行测试.因此,可以通过仅提供凭证集来以编程方式访问自己的帐户:允许调用API的开发人员凭证以及授予对开发人员自己的数据的访问权的其他凭证.对于例如:

from twitter import *

t = Twitter(
    auth=OAuth(token, token_key, con_secret, con_secret_key))

# Get your "home" timeline
t.statuses.home_timeline()

# Update your status
t.statuses.update(
    status="Tweeting from Python")
Run Code Online (Sandbox Code Playgroud)

con_secret*开发人员凭据和token*帐户访问凭据在哪里?

  • 如何使用Google API执行同样简单的操作?
  • 我在哪里可以获得访问自己帐户的凭据?
  • 我如何在Google API中使用它们?

举个例子,从我自己的Youtube播放列表中检索内容的最简单的程序是什么?


我可以认为Python无头浏览器库可以给我我需要的东西.我已经在SE Software Recommendations上提出了相关问题 https://softwarerecs.stackexchange.com/questions/35744/python-headless-browser-library-for-oauth2-authentication-from-ipython-console

google-api google-authentication headless-browser google-oauth google-api-python-client

9
推荐指数
1
解决办法
3212
查看次数

使用Nodejs Selenium Webdriver实现无头自动化

我正在使用一个必须部署在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')是应该使导航无声的参数,但显然它不起作用或者我遗漏了一些我不知道的东西.

如果有一些我遗失的东西,请告诉我,因为我不知道我想做什么是可能的,因为这是我使用这种技术的第一次.

谢谢.

node.js headless-browser selenium-webdriver

9
推荐指数
3
解决办法
1万
查看次数

Selenium C中的无头Firefox#

我想运行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'功能,并且在命令行上未设置二进制标志

c# firefox selenium headless headless-browser

9
推荐指数
1
解决办法
6153
查看次数

如何将 Puppeteer 指向本地图像/字体?

我想使用 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 不加载图像,我不知道如何将它指向他?该图像与脚本位于同一目录中。

除了图像,我想加载自定义字体,怎么做?

headless-browser puppeteer

9
推荐指数
1
解决办法
3605
查看次数