我希望使用chrome无头浏览器复制"另存为"功能,以保存包含所有资源的完整网页.有没有办法做到这一点?我尝试了--print-to-pdf和--screenshot选项,并期待探索"另存为"选项.
google-chrome headless headless-browser google-chrome-headless
背景:
我正在使用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.
谢谢!
我需要自动化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视频?
所以这是代码片段:
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点击之后.
您是否知道任何试图检测用户是否使用 selenium/puppeteer/phantomJS 或任何其他无头浏览器的 web 应用程序/在线测试/在线防火墙?
我已经创建了我的 puppeteer 在线爬虫。我改变了很多不同的东西,比如window.navigator对象(用户代理、~.webdriver 等)。
现在我想确保它是不可检测的。
有没有办法获得PhantomJS(或类似)正在渲染的实时视图?
我想在与其所针对的页面交互(或至少看到一个屏幕截图)的同时开发我的自动化脚本.
主要用例是使用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*帐户访问凭据在哪里?
举个例子,从我自己的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
我正在使用一个必须部署在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 不加载图像,我不知道如何将它指向他?该图像与脚本位于同一目录中。
除了图像,我想加载自定义字体,怎么做?
headless-browser ×10
puppeteer ×3
selenium ×3
headless ×2
node.js ×2
phantomjs ×2
c# ×1
firefox ×1
google-api ×1
google-oauth ×1
html ×1
maven ×1
video ×1
webdriver ×1
xvfb ×1