php - 使用名称中带有连字符的作曲家脚本?
问题描述
我正在尝试使用来自 Github 的以下脚本:https ://github.com/php-webdriver/php-webdriver
在“/mnt/hgfs/”中使用 composer 安装很容易,但是在 php 文件中加载类似乎是不可能的
如您所见,名称中有一个连字符,我似乎无法以任何方式加载该类。我已经搜索了很多并尝试了很多东西,但同样的问题,我得到:
尝试在命名空间中使用连字符并使用我得到
PHP 解析错误:语法错误,意外的“-”,在第 3 行的 /mnt/hgfs/test.php 中需要“{”
用下划线替换连字符,或者只是删除它我得到:
PHP 致命错误:未捕获的错误:在 /mnt/hgfs/test.php:10 中找不到类 'php_webdriver\WebDriver\Remote\DesiredCapabilities'
这就是我的代码的外观(/mnt/hgfs/test.php):
namespace php_webdriver\WebDriver;
require 'vendor/autoload.php';
use php_webdriver\WebDriver\Chrome\ChromeOptions;
use php_webdriver\WebDriver\Chrome\ChromeDriver;
use php_webdriver\WebDriver\Remote\DesiredCapabilities;
use php_webdriver\WebDriver\Remote\RemoteWebDriver;
$host = 'http://localhost:4444/wd/hub'; // this is the default
$capabilities = DesiredCapabilities::htmlUnitWithJS();
{
$options = new ChromeOptions();
$options->addArguments(array(
'--disable-extensions',
'--no-sandbox',
'--headless',
'--no-proxy-server'
));
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
$capabilities->setPlatform("Linux");
}
$driver_spec = RemoteWebDriver::create($host, $capabilities, 600000, 600000);
我应该如何加载这个类?
解决方案
这里有几件事是错误的:
namespace php_webdriver\WebDriver;
您不应该尝试将代码添加到 webdriver 命名空间。对于测试脚本,您不需要自己的命名空间。您可能可以删除此行。
至于:
require 'vendor/autoload.php';
use php_webdriver\WebDriver\Chrome\ChromeOptions;
use php_webdriver\WebDriver\Chrome\ChromeDriver;
use php_webdriver\WebDriver\Remote\DesiredCapabilities;
use php_webdriver\WebDriver\Remote\RemoteWebDriver;
我的印象是你不是 100% 熟悉 PSR-4 / 自动加载的工作原理。命名空间通过 映射到代码目录autoload.php
,两者不一定要具有相同的命名结构。
看看composer.json
webdriver 项目中的,并注意PSR-4
部分。
"Facebook\\WebDriver\\": "lib/"
告诉您lib
目录中的任何内容都将被视为在Facebook\WebDriver
名称空间中。
尝试
require 'vendor/autoload.php';
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Chrome\ChromeDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
推荐阅读
- sql - 当父子 ID 相同时,递归 CTE 进入无限循环
- java - 使用网络摄像头录制视频并将其保存在 java 中
- php - VichUploaderBundle 和 OneToOne 关系
- node.js - 无法使用 ejs 从对象中检索键值
- python - 无法弄清楚嵌套的 for 循环部分以及它在这段代码中是如何工作的
- python - 在 Google Cloud for ML 上推送和运行 python 脚本
- hive - 直线 - 无当前连接 - 未找到默认 hs2 连接配置
- python - 将基于函数的视图转换为基于类的视图
- reactjs - Firebase onAuthStateChange 是否应该自动触发页面重定向?
- ios - 如何选择所有 UICollectionView 单元格并通过单击按钮取消选择?