标签: headless-browser

Selenium Pyvirtualdisplay在启动时挂起

我有一个selenium测试,我试图在我的ubuntu服务器上无头地运行.它使用pyvirtualdisplay和xephyr.虽然脚本在我的本地系统中运行良好,但是当我在服务器中运行它时它会挂起.我试图清除内存并重新启动服务器.但没有运气.脚本看起来像这样:

from selenium import webdriver
from pyvirtualdisplay import Display

display = Display(visible=0, size=(1366, 768))
display.start()
driver = webdriver.Firefox()
driver.set_window_size(1366, 768)
driver.get ("http://www.google.com/")
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

selenium headless headless-browser python-2.7 pyvirtualdisplay

7
推荐指数
1
解决办法
4108
查看次数

带有下载功能的无头浏览器测试?

我一直在寻找在osx中​​进行无头测试的解决方案.但我需要能够保存服务器返回的文件.

我测试了selenium,phantomjs,casperjs,并研究了我能在网上找到的任何东西.

他们都不支持下载.我错过了什么吗?有没有支持下载的无头浏览器/测试框架?

selenium headless-browser phantomjs casperjs

7
推荐指数
1
解决办法
5911
查看次数

通过Nightmare.js在linux服务器上无头地运行电子(原子壳)

我正在构建一个scraper,以使JS单页面应用程序易于抓取.

对PhantomJS(内存泄漏,过时的webkit,不死生物进程以及许多其他问题)感到非常沮丧之后,我决定改用NightmareJS,它可以做同样的事情,但在引擎盖下使用Electron.Electron有很多优点(使用最新的铬,速度要快得多)但它需要X服务器才能运行.

因为我需要让它在ubuntu服务器下运行,所以我遵循了这个要点.现在我有一个伟大的EC2实例,一切都准备好运行无头电子

xvfb-run electron
Run Code Online (Sandbox Code Playgroud)

关键是我需要通过nightmareJS运行它(我将在node.js服务器脚本中使用).我想知道如何将参数传递给噩梦以便通过svfb启动电子

node.js headless-browser xvfb nightmare electron

7
推荐指数
1
解决办法
4638
查看次数

WebDriverError:未知错误:Chrome无法启动:异常退出

我想要实现的目标 在Ubuntu 14 non gui上成功运行无头镀铬的量角器测试.

设置 使用多个参考页面我已成功安装:Xvfb Chrome最新浏览器Protractor 3.3.0 Java 7(也尝试使用Java 8)并设置了LOCAL_HOME.此外,设法使用此引用启动Xvfb .

量角器conf

exports.config = {
    baseUrl: 'http://<qa environment>',
    framework: 'jasmine',
    seleniumAddress: 'http://localhost:4444/wd/hub',
    jasmineNodeOpts: {
        showColors:true,
        defaultTimeoutInterval: 2500000
    },
     capabilities: {
    'browserName': 'chrome'
  },

    specs: ['administration/*-spec.js'],  //'signinandout/*-spec.js', 'homepage/*-spec.js',
    onPrepare: function(){
        //browser.driver.manage().window().setSize(1280, 1080);
    }
}
Run Code Online (Sandbox Code Playgroud)

异常堆栈跟踪:

/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/error.js:26构造函数(opt_error){^ WebDriverError:未知错误:Chrome无法启动:异常退出(驱动程序信息:chromedriver = 2.21.371461( 633e689b520b25f3e264a2ede6b74ccc23cb636a),platform = Linux 3.13.0-87-generic x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:60.16秒构建信息:版本:'2.52.0',修订版:'4c2593c' ,时间:'2016-02-11 19:06:42'系统信息:主持人:'vagrant-ubuntu-trusty-64',ip:'10 .0.2.15',os.name:'Linux',os.arch: 'amd64',os.version:'3.13.0-87-generic',java.version:'1.7.0_101'驱动程序信息:org.openqa.selenium.chrome.ChromeDriver at WebDriverError(/ usr/local/lib/node_modules /protractor/node_modules/selenium-webdriver/error.js:26:26)在/ usr的Object.checkLegacyResponse(/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/error.js:580:13)/local/lib目录/ node_modules /量角器/ node_modules /硒webd river/lib/webdriver.js:64:13在Promise.invokeCallback_(/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1329:14)在TaskQueue.execute_(/ usr) /local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2790:14)在TaskQueue.executeNext_(/ usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise) .js:2773:21)/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2652:27 at/usr/local/lib/node_modules/protractor/node_modules/selenium- …

selenium google-chrome webdriver headless-browser protractor

7
推荐指数
1
解决办法
4671
查看次数

无头镀铬代理服务器设置

任何人都可以帮我设置无头镀铬的代理服务器,同时在这里提到Node.js中的灯塔镀铬启动器

const launcher = new ChromeLauncher({
    port: 9222,
    autoSelectChrome: true, // False to manually select which Chrome install.
    additionalFlags: [
      '--window-size=412,732',
      '--disable-gpu',
      '--proxy-server="IP:PORT"',
      headless ? '--headless' : ''
    ]
  });
Run Code Online (Sandbox Code Playgroud)

但是,上面的脚本根本没有命中我的代理服务器.Chrome似乎回退到DIRECT://与目标网站的连接.

关于在无头chrome的上下文中使用HTTP/HTTPS代理服务器的另一个资源就是这个.但它没有给出如何从Node.js使用它的任何示例.

google-chrome node.js headless-browser lighthouse google-chrome-devtools

7
推荐指数
1
解决办法
5286
查看次数

为什么我不能在使用Puppeteer的exposeFunction()函数中访问'window'?

我有一个非常简单的Puppeteer脚本,用于exposeFunction()在无头Chrome中运行一些东西.

(async function(){

    var log = console.log.bind(console),
        puppeteer = require('puppeteer');


    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    var functionToInject = function(){
        return window.navigator.appName;
    }

    await page.exposeFunction('functionToInject', functionToInject);

    var data = await page.evaluate(async function(){
        console.log('woo I run inside a browser')
        return await functionToInject();
    });

    console.log(data);

    await browser.close();

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

这失败了:

ReferenceError: window is not defined
Run Code Online (Sandbox Code Playgroud)

其中指的是注入的功能.如何window在无头Chrome内部进行访问?

我知道我可以做evaluate(),但这不适用于我动态传递的函数:

(async function(){

    var log = console.log.bind(console),
        puppeteer = require('puppeteer');

    const browser = await puppeteer.launch(); …
Run Code Online (Sandbox Code Playgroud)

google-chrome node.js headless-browser puppeteer

7
推荐指数
2
解决办法
5036
查看次数

想用puppeteer.js刮桌子.如何获取所有行,遍历行,然后为每行获取"td"

我有puppeteer js设置,并能够使用所有行

let rows = await page.$$eval('#myTable tr', row => row);
Run Code Online (Sandbox Code Playgroud)

现在我想让每一行得到"td",然后从那些行获取内部文本.

基本上我想这样做:

var tds = myRow.querySelectorAll("td");
Run Code Online (Sandbox Code Playgroud)

其中myRow是一个表行,有puppeteer.js

html javascript headless-browser puppeteer

7
推荐指数
2
解决办法
8229
查看次数

Chrome headless:超时退出

我正在使用 chrome headless 来截图。但是当添加超时时,进程不会退出,它会保持活动状态......有没有办法在错误(例如超时)时终止进程?

没有超时的命令及其输出(这个正在工作):

>>> chrome --headless --screenshot --no-sandbox https://stackoverflow.com
[0808/174530.681784:ERROR:gpu_process_transport_factory.cc(1016)] Lost UI shared context.
Fontconfig warning: "/etc/fonts/fonts.conf", line 146: blank doesn't take any effect anymore. please remove it from your fonts.conf
[0808/174531.735502:ERROR:cert_verify_proc_nss.cc(981)] CERT_PKIXVerifyCert for securepubads.g.doubleclick.net failed err=-8179
[0808/174532.060892:INFO:headless_shell.cc(590)] Written to file screenshot.png.
>>> 
Run Code Online (Sandbox Code Playgroud)

超时命令(测试时为 1 毫秒)及其输出(待定):

>>> chrome --headless --screenshot --no-sandbox --timeout=1 https://stackoverflow.com
[0808/174256.720003:ERROR:gpu_process_transport_factory.cc(1016)] Lost UI shared context.
Fontconfig warning: "/etc/fonts/fonts.conf", line 146: blank doesn't take any effect anymore. please remove it from your fonts.conf
[0808/174256.772496:INFO:headless_shell.cc(344)] Timeout.
Run Code Online (Sandbox Code Playgroud)

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

7
推荐指数
1
解决办法
1459
查看次数

如何在 iframe 内渲染 .mht 文件

我想使用无头 Chrome 拍摄页面快照,它将返回一个文件给我,因此我正在创建一个 mht 文件,因为它将包含有关网页的更多信息。所以,现在我想在 iframe 中渲染这个快照,但我无法这样做。

<iframe src="file:///home/user/untitled1.mht"></iframe>
Run Code Online (Sandbox Code Playgroud)

渲染后会返回错误。

Attempted to load a multipart archive into an subframe
Run Code Online (Sandbox Code Playgroud)

html mhtml headless-browser

7
推荐指数
1
解决办法
1420
查看次数

HeadlessChrome 与 Chrome 83 与 Karma 断开连接

Karma我使用、Sinon和执行一些单元测试Mocha。它运行良好,一个月来,我在运行这些单元测试时遇到了一些问题。我的 HeadlessChrome 出现错误。事实上,它显示了这个错误:

HeadlessChrome 83.0.4103 (Windows 10.0.0) ERROR
Disconnected, because no message in 30000 ms.
Run Code Online (Sandbox Code Playgroud)

我有这个业力配置:

module.exports = function (config) {
  config.set({
    // Others configs
    ...
    port: 9876,
    browsers: ['ChromeHeadlessNoSandbox'],
    customLaunchers: {
      ChromeHeadlessNoSandbox: {
        base: 'ChromeHeadless',
        flags: [
          '--no-sandbox', // required to run without privileges in docker
          '--user-data-dir=/tmp/chrome-test-profile',
          '--disable-web-security'
        ]
      }
    },
    captureTimeout: 10000,
    plugins: [
      'karma-mocha', 'karma-mocha-reporter', 'karma-junit-reporter', 'karma-chrome-launcher',
      'karma-typescript', 'karma-html-reporter'
    ]
  });
};

Run Code Online (Sandbox Code Playgroud)

我找到了两种方法来修复它:

  • 降级到版本 81。
  • 在浏览器中打开 localhost:9876 中的页面。
  • 更改 karma 配置(浏览器和标志属性):
module.exports …
Run Code Online (Sandbox Code Playgroud)

headless-browser karma-runner google-chrome-headless

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