有没有办法在无头状态下使用jsTestDriver加载浏览器但是无头(你看不到浏览器)或者加载最小化?
希望这不是一个愚蠢的问题。
我最近对一些我很好奇的事情有了一个想法。
我是 Node.js(我认为与此无关)和 V8 引擎的粉丝,但我想知道是否可以在内部运行浏览器(让它执行 JS)。
我的意思是创建一个程序(可能使用 V8 引擎),它可以打开一个页面(就像在浏览器中一样)并执行其 javascript。
例如,假设我在 www.mysite.co.uk/home.php 上托管了以下文件
<!DOCTYPE html>
<html>
<head>
<script>
function myFunction()
{
//javascript AJAX call to www.mysite.co.uk/ping.php
}
myFunction();
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
ping.php 看起来像:
<?php
//connect mysql, database ping and table ping
//it is a single column table with integer value starting on 0
//increment by 1 and update the table
Run Code Online (Sandbox Code Playgroud)
假设我想通过在命令行/linux 盒子上使用某种脚本来执行 Javascript(基本上不使用浏览器)。
所以像这样:
./mybrowser http://www.mysite.co.uk/home.php
Run Code Online (Sandbox Code Playgroud)
甚至:
./mybrowser home.php
Run Code Online (Sandbox Code Playgroud)
我觉得这应该是可能的,因为 V8(或不同的 JS 引擎)在技术上应该能够执行 Javascript,但我不知道它如何在浏览器上下文中执行此操作(或者即使可能)。
有任何想法吗?
如何在OSX平台上的Safari浏览器上无头地运行我的jstestdriver测试用例?我可以使用xvfb-run命令在Linux上实现相同的功能.但是,OSX中没有这样的包装命令.我尝试执行以下2个命令,然后在safari中执行我的测试用例.
Xvfb :99 -ac &
export DISPLAY=:99
Run Code Online (Sandbox Code Playgroud)
但是,通过Safari浏览器显示而不是在xvfb环境中运行.好像Safari完全忽略了DISPLAY命令.有没有办法在OSX上无头地运行Safari?
我正在使用量角器,当我将chrome指定为browsertype时它可以工作.我正在寻找一个无头浏览器示例代码,我已经找了phantomJs但我无法运行其中任何一个.是否有另一个无头浏览器的工作样本?
我买了socsk5的代理服务器版本。在所有手册中相同的例子
const browser = await puppeteer.launch({
headless: true,
ignoreHTTPSErrors: true,
defaultViewport: {...winSize},
args: [
'--proxy-server=socks5://proxyhost:8000',
'--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE proxyhost"',
],
})
Run Code Online (Sandbox Code Playgroud)
它没有为此代理指定登录密码,显然不起作用
如果你指定这个
'--proxy-server=socks5://user:password@proxyhost:8000',
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误
net::ERR_NO_SUPPORTED_PROXIES
我尝试使用https://github.com/sjitech/proxy-login-automator构建一座桥,但它也不起作用。
请提示
google-chrome headless headless-browser google-chrome-headless puppeteer
我正在尝试使用 Puppeteer 执行右键单击。
我试图添加选项:
await component.click({ button: "right" })
Run Code Online (Sandbox Code Playgroud)
但我得到的只是对组件的常规点击。我遵循了 Puppeteer 的API。
我究竟做错了什么?
javascript node.js headless-browser google-chrome-devtools puppeteer
我正在尝试实现一些非常琐碎的事情:获取元素列表,然后innerText对每个元素的元素进行操作。
const tweets = await page.$$('.tweet');
Run Code Online (Sandbox Code Playgroud)
据我所知,这将返回一个节点列表,就像document.querySelectorAll()浏览器中的方法一样。
我如何遍历它并得到我所需要的?我尝试了各种东西,例如:
[...tweets].forEach(tweet => {
console.log(tweet.innerText)
});
Run Code Online (Sandbox Code Playgroud) javascript node.js headless-browser google-chrome-devtools puppeteer
我的环境:
终端打印出这个错误内容:
(node:18157) UnhandledPromiseRejectionWarning: Error: No node found for selector: #identifierNext
at assert (/home/hoangdd3/node_modules/puppeteer/lib/helper.js:279:11)
at DOMWorld.click (/home/hoangdd3/node_modules/puppeteer/lib/DOMWorld.js:366:5)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
-- ASYNC --
at Frame.<anonymous> (/home/hoangdd3/node_modules/puppeteer/lib/helper.js:111:15)
at Page.click (/home/hoangdd3/node_modules/puppeteer/lib/Page.js:1037:29)
at puppeteer.launch.then (/home/hoangdd3/pupperteer/example.js:15:16)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
(node:18157) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) …Run Code Online (Sandbox Code Playgroud) javascript node.js headless-browser google-chrome-headless puppeteer
我在一个网站上运行了大量测试。当我在 Windows 上本地运行测试时,它们都 100% 通过。该测试是在 Google Chrome 上设计和运行的。
现在,我们开始通过 Jenkins 作业在无头模式下在 Linux 上运行测试。现在有些测试在 0% 的情况下失败,或者仅在 20% 甚至 10% 的情况下通过。在我的代码中,我通过 ID、xpath 或 css 查找元素,然后简单地单击它们。我使用 WebDriverWait 对象进行等待 - 既等待元素出现又可单击。
我的代码示例:
WebDriverWait wait = new WebDriverWait(browser, secondsToWait);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id(elementID)));
lastFoundElement = wait.until(ExpectedConditions.elementToBeClickable(By.id(elementID)));
clickLastFoundElement();
Run Code Online (Sandbox Code Playgroud)
在我的报告中,我主要看到未找到元素,并且我通过了等待对象中设置的超时。
如何让无头测试更加稳定?
为什么无头状态会造成如此多的问题?
java selenium headless-browser jenkins google-chrome-headless
我看过你可以在Heroku上更改构建的帖子,将PhantomJS与Cedar堆栈一起使用,但是可以在unicorn堆栈上运行无头浏览器吗?
headless-browser ×10
javascript ×5
puppeteer ×4
node.js ×3
angularjs ×1
headless ×1
heroku ×1
html ×1
java ×1
jenkins ×1
macos ×1
phantomjs ×1
protractor ×1
safari ×1
selenium ×1
unit-testing ×1
v8 ×1
xvfb ×1