我正在使用python-selenium和Chrome 59,并试图自动化一个简单的下载序列.当我正常启动浏览器时,下载工作正常,但是当我在无头模式下这样做时,下载不起作用.
# Headless implementation
from selenium import webdriver
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument("headless")
driver = webdriver.Chrome(chrome_options=chromeOptions)
driver.get('https://www.mockaroo.com/')
driver.find_element_by_id('download').click()
# ^^^ Download doesn't start
Run Code Online (Sandbox Code Playgroud)
# Normal Mode
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.mockaroo.com/')
driver.find_element_by_id('download').click()
# ^^^ Download works normally
Run Code Online (Sandbox Code Playgroud)
我甚至尝试添加默认路径:
prefs = {"download.default_directory" : "/Users/Chetan/Desktop/"}
chromeOptions.add_argument("headless")
chromeOptions.add_experimental_option("prefs",prefs)
Run Code Online (Sandbox Code Playgroud)
添加默认路径在正常实现中起作用,但无头版本中仍存在相同的问题.
如何在无头模式下启动下载?
我一直在查看以下关于无头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
我正在研究一个用于网络搜索的python脚本,并且已经走上了使用Chromedriver作为其中一个软件包的道路.我希望这在没有任何弹出窗口的情况下在后台运行.我在chromedriver上使用'headless'选项,它似乎没有显示浏览器窗口,但是,我仍然看到.exe文件正在运行.看到我正在谈论的截图.截图
这是我用来启动ChromeDriver的代码:
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
options.add_argument('headless')
options.add_argument('window-size=0x0')
chrome_driver_path = "C:\Python27\Scripts\chromedriver.exe"
Run Code Online (Sandbox Code Playgroud)
我试图做的事情是将选项中的窗口大小改为0x0,但我不确定是什么,因为.exe文件仍然弹出.
有关如何做到这一点的任何想法?
我使用的是Python 2.7 FYI
python selenium selenium-chromedriver selenium-webdriver google-chrome-headless
我无法使用无头模式在Google Chrome中使用我当前安装的扩展程序.有没有办法启用它们?
检查扩展是否有效的简单方法是添加,例如," Comic Sans Everything "扩展.
谷歌看起来像这样:
但是,如果我使用无头模式(google-chrome --headless --disable-gpu --screenshot https://www.google.com)拍摄页面的屏幕截图,结果是:
google-chrome google-chrome-extension google-chrome-headless
场景:用于开发人员应用注册的Web表单,包含两部分工作流程.
第1页:填写开发者应用程序详细信息,然后单击按钮以在新选项卡中创建应用程序ID,该ID将打开...
第2页:App ID页面.我需要从此页面复制App ID,然后关闭选项卡并返回到第1页并填写App ID(从第2页保存),然后提交表单.
我了解基本用法 - 如何打开第1页并单击打开第2页的按钮 - 但如何在新选项卡中打开第2页时如何处理?
例:
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch({headless: false, executablePath: '/Applications/Google Chrome.app'});
const page = await browser.newPage();
// go to the new bot registration page
await page.goto('https://register.example.com/new', {waitUntil: 'networkidle'});
// fill in the form info
const form = await page.$('new-app-form');
await page.focus('#input-appName');
await page.type('App name here');
await page.focus('#input-appDescription');
await page.type('short description of app here');
await page.click('.get-appId'); //opens new tab with Page 2
// handle …Run Code Online (Sandbox Code Playgroud) 我再一次需要帮助.我正在尝试使用chrome的无头功能将页面打印为pdf.但是,页眉和页脚存在于pdf中.我发现这个选项已经在Devtools中实现了.
https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF
但是,我无法找到如何在CLI中使用这些选项.也可以从硒中调用Devtools?
另外,我如何在Dev工具中调用Page.PrintToPDF.我试图在Console中运行该命令.它显示页面未定义.
我正在尝试使用chrome headless将我的网页打印成PDF文件.PDf文件没有数据,因为无头chrome在ajax命令完成之前打印它.
关于如何让它等待的任何想法?
这是我目前使用的命令:
chrome --headless http://localhost:8080/banana/key --run-all-compositor-stages-before-draw --print-to-pdf=C:\\tmp\\tmp.pdf
Run Code Online (Sandbox Code Playgroud) 我想知道是否有可能以某种方式安装没有X11依赖的Headless Chrome,例如在VM或Docker容器中?目前,当我从Chrome repo安装它时,它会下载许多无用的东西作为依赖项.构建Docker容器需要很长时间,而且还需要额外的空间.
google-chrome headless headless-browser google-chrome-headless
我正在使用无头Chrome将html文档导出为pdf
google-chrome --headless --disable-gpu --print-to-pdf='output_path' 'url'
Run Code Online (Sandbox Code Playgroud)
如何更改生成的pdf中的纸张尺寸?
我可以控制Chrome参数和html.
我总是收到美国信.
没有记录的命令行选项.
我试过设置CSS : @page {size: A4;}. 在无头模式下没有效果,但是当我在正常模式下点击Ctrl+ P时(选择纸张大小Save as pdf消失,导出的pdf具有A4页面大小).
我在Ubuntu 16.04上的Chrome版本59,60和61上试过这个.
使用puppeteer,你怎么能以编程方式提交表单?到目前为止,我已经能够使用page.click('.input[type="submit"]')如果表单实际包含提交输入.但是对于不包含提交输入的表单,关注表单文本输入元素和使用page.press('Enter')似乎并不会导致表单提交:
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://stackoverflow.com/', {waitUntil: 'load'});
console.log(page.url());
// Type our query into the search bar
await page.focus('.js-search-field');
await page.type('puppeteer');
// Submit form
await page.press('Enter');
// Wait for search results page to load
await page.waitForNavigation({waitUntil: 'load'});
console.log('FOUND!', page.url());
// Extract the results from the page
const links = await page.evaluate(() => {
const anchors = Array.from(document.querySelectorAll('.result-link a'));
return anchors.map(anchor …Run Code Online (Sandbox Code Playgroud) node.js ×2
pdf ×2
puppeteer ×2
python ×2
selenium ×2
command-line ×1
css ×1
headless ×1
javascript ×1
printing ×1
windows-10 ×1