问题标签 [symfony-panther]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1557 浏览

docker - 如何使用 docker 设置 pather 爬虫

Dockerfile

docker-compose.yml

composer.json

index.php

所有文件都在同一个位置。我跑了docker-compose build && docker-compose up,我收到以下错误: crawler_1 | Fatal error: Uncaught RuntimeException: Could not start chrome (or it crashed) after 30 seconds. in /usr/src/vendor/symfony/panther/src/ProcessManager/WebServerReadinessProbeTrait.php:51

这类似于https://github.com/symfony/panther/issues/200,但是在我的情况下,我没有使用 panther 进行测试,而只是为了刮,我真的不知道如何解决这个问题。我认为我的问题可能与无效的 docker / docker-compose 文件有关。

0 投票
2 回答
439 浏览

php - 无法在 symfony 5 下安装 panther

我真的需要帮助,因为我无法在 Symfony 5 项目中安装 panther。Symfony/panther 需要 facebook/webdriver,每次我这样做:composer 需要 facebook/webdriver 或 composer req symfony/panther

我收到此错误消息:

我使用 Composer 1.9.1 和 PHP 7.2.14

非常感谢

0 投票
0 回答
321 浏览

php - Symfony panter:出现错误未知错误:无法从 facebook/webdriver 写入 prefs 文件

我在 Laravel 中为客户构建了一个网络爬虫。为此,我使用了 symfony panter 包。symfony panter 我完成了它的开发,并被要求将它放在客户端的服务器上,这就是错误发生的地方。它在我的宅基地流浪盒子上运行得非常好。当然,为了实现这一点,我在 vagrant box 上安装了 chrome78,并使用了 panter 包中的 chromedriver-bin/update.sh,因此它支持 chrome78。这就像一个魅力。

如前所述,我必须在 CentOS 7 上运行的客户端服务器上安装该软件包。我使用本教程在其上安装了 chrome: https ://www.cyberciti.biz/faq/howto-install-google-chrome -on-redhat-rhel-fedora-centos-linux/ 当然,我再次从 panter 包中运行了 ./update.sh。我现在预计它会起作用。但我收到以下错误。

我看过关于不同应用程序的类似帖子。但他们没有为我提供解决此特定问题的方法或信息。如果有人有想法,他们可以帮助我吗?我会定期查看这个帖子,所以如果有任何后续问题需要回答,我会尽快回复!

亲切的问候

0 投票
1 回答
89 浏览

php - PHPUnit+Panther 劫持/拦截/admin 路由

在一个使用 PHPUnit 进行工作测试的现有 Symfony 项目中,我从使用 Browser-Kit 切换到 Panther(以解决测试在 JavaScript 方面的缺点)。

起初,将测试迁移到 Panther 上似乎很简单。但是后来我无法让 Web 应用程序的管理面板的测试正常工作。对任何路由的所有请求都会/admin/*返回一个非常“phpinfo()-/apache-feely”的 404 响应:

其他不存在的路由返回常规的 symfony 异常/错误调试页面。

如果我将管理控制器映射到另一条路线(例如/administration/*),我会得到预期/正确的响应。

此外,我无法在 PHPUnit/Panther 管道之外重现该问题,可以这么说:如果我(启用并)使用测试环境运行内部服务器(symfony/web-server-bundle),我会收到预期/正确/admin/*路线上也有回应。

如果我将 PHPUnit/Panther 设置为使用不同的端口,问题仍然存在。

我不知道 PHPUnit/Panther 使用了哪个服务器实例(也因为它在错误的 404 响应中并不明显),但似乎这个服务器实例专门拦截了/admin/*范围之外的路由symfony 网络应用程序以响应 404。

有谁知道在 PHPUnit/Panther 的引擎盖下正在启动什么服务器实例,或者甚至可以说我可以在哪里禁用错误拦截的路由?

0 投票
1 回答
1363 浏览

php - 如何使用 symfony/panther 设置代理服务器

我发现有两种设置代理服务器的方法,一种是通过 chrome Web 驱动程序功能,另一种是在创建 chrome 客户端时直接设置

但是在设置代理IP和端口后,出现以下错误:

基本上我想在使用 Symfony panther抓取数据时使用代理服务器。

0 投票
1 回答
1050 浏览

symfony - 更改 Symfony Panther Chromeclient 的用户代理

如何在 Symfony 的 Panther 创建的无头 Chrome 中更改用户代理createChromeClient()

当我创建一个 Chrome 客户端时

$client = \Symfony\Component\Panther\Client::createChromeClient();

我在 access_log 中看到了一个用户代理

"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/77.0.3865.90 Safari/537.36"

我搜索了解决方案,并认为我必须通过 chrome 的参数更改用户代理字符串,但找不到正确的方法,因为网络上的答案不适用于 PHP 或 Panther。

干杯!

0 投票
1 回答
328 浏览

php - 未知错误:无法使用 Symfony Panther 在 Laravel 中为用户数据目录创建临时目录

我正在使用带有 Laravel 框架的 Symfony Panther。我在使用这个时遇到了错误

未知错误:无法为用户数据目录创建临时目录 {"exception":"[object] (Facebook\WebDriver\Exception\UnknownErrorException(code: 0):

我已经为 Windows 7.4.2 安装了 XAMPP。

PHP:7.4.2,阿帕奇:2.4.41

作曲家.json

Laravel 控制器类

[2020-02-27 16:12:21] local.ERROR: unknown error: cannot create temp dir for user data dir {"exception":"[object] (Facebook\WebDriver\Exception\UnknownErrorException(code: 0):未知错误:无法在 D:\WWW\PHP\myproject\vendor\php-webdriver\webdriver\lib\Exception\WebDriverException.php:139 为用户数据目录创建临时目录

0 投票
1 回答
801 浏览

php - PHP 使用 panther 库从 bing 中抓取图像显示 chrome 端口 9515 已在使用中

我试图通过传递我在 bing 上搜索图像并尝试抓取图像的前 3 个单词来从 rss 提要中抓取图像。我的代码正在运行,但我总是收到端口 9515 已在使用中的错误。我已经添加了代码来终止端口,但它不起作用,请帮帮我。我参考了这个 url 来构建我的代码https://www.thoughtfulcode.com/php-web-scraping/。/请帮帮我。

代码

0 投票
1 回答
2128 浏览

php - Webscraping Symfony/Panther:无法获取 HTML

我想在 Laravel 应用程序中使用 symfony panther 包抓取一个站点。根据文档https://github.com/symfony/panther#a-polymorphic-feline我不能使用HttpBrowser也不能使用HttpClient类,因为它们不支持 JS。

因此,我尝试使用 ChromClient,它使用本地 chrome 可执行文件和 panther 包附带的 chromedriver 二进制文件。

不幸的是,我只收到空的默认 chrome 页面作为 HTML:

$client使用或-instance执行其他操作的每种方法都会$crawler导致错误“没有可用的节点”。

此外,我尝试了文档中的基本示例https://github.com/symfony/panther#basic-usage --> 相同的结果。

我在 Windows 上的 WSL 下使用 ubuntu 18.04 Server 并安装了google-chrome-stabledeb 包。这似乎有效,因为安装后不再出现“找不到二进制文件”错误。

我还尝试手动使用 Windows 主机系统的可执行文件,但这只会打开一个空的 CMD 窗口,在关闭时总是重新打开。我必须通过 TaskManager 终止该进程。

这是因为 Ubuntu 服务器没有任何可用的 x-server 吗?
我可以做些什么来接收任何 HTML?

0 投票
2 回答
376 浏览

php - 使用 symfony/panther 进行测试时调用未定义的方法 assertPageTitleContains()

我正在开发一个没有任何框架的网站,我想使用 panther 集成一些测试。

信息

我的文件夹结构

我的 composer.json

我的 phpunit.xml.dist

我的 E2eTest.php

问题

当我运行时.\vendor\bin\phpunit .\Tests\E2eTest.php出现错误:

1) App\Tests\E2eTest::testMyApp 错误:调用未定义的方法 App\Tests\E2eTest::assertPageTitleContains()

我不明白为什么。

谢谢你的帮助