所以,我忠实地遵循了Codeception Quick Start instructions。我使用PhpBrowser运行第一个示例测试...
# Codeception Test Suite Configuration
#
# [further comments omitted]
#
actor: AcceptanceTester
modules:
enabled:
- PhpBrowser:
url: 'http://office.localhost/'
browser: 'firefox'
- \Helper\Acceptance
和测试:
<?php
class FirstCest
{
public function frontpageWorks(AcceptanceTester $I)
{
$I->amOnPage('/');
$I->see('We hope you enjoy it');
}
}
一切都很顺利。
然后我将配置更改为:
actor: AcceptanceTester
modules:
enabled:
- WebDriver:
url: 'http://office.localhost/'
browser: 'firefox'
- \Helper\Acceptance
根据说明,我安装了Selenium并启动并运行,然后我们走了......
1) FirstCest: Frontpage works
Test tests/acceptance/FirstCest.php:frontpageWorks
[PHPUnit\Framework\Exception] Undefined index: ELEMENT
Scenario Steps:
2. $I->see("InterpretersOffice") at tests/acceptance/FirstCest.php:22
1. $I->amOnPage("/") at tests/acceptance/FirstCest.php:21
#1 /opt/www/court-interpreters-office/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:198
#2 Codeception\Module\WebDriver->see
#3 /opt/www/court-interpreters-office/tests/_support/_generated/AcceptanceTesterActions.php:363
#4 /opt/www/court-interpreters-office/tests/acceptance/FirstCest.php:22
#5 FirstCest->frontpageWorks
Selenium正在推动Firefox,页面已加载,$I
想要see()
的内容就在那里,因此无法解决问题。我在源头上探了一下,但是没有想到这一点。我尝试将$I->see()
更改为$I->seeInSource()
,发现确实有效,FWIW。
有什么想法吗?
答案 0 :(得分:4)
问题显然是Facebook的php-webdriver与当前的Firefox不兼容。
These threads更详细地讨论了这个问题,php-webdriver issue #469跟踪添加了完整的W3C WebDriver支持(这将修复不兼容性)。
解决方法是在启动Selenium时添加-enablePassthrough false
参数。例如:
java -Dwebdriver.gecko.driver=./geckodriver -jar selenium-server-standalone-3.8.1.jar -enablePassThrough false
不幸的是,Selenium removed support for pass through mode in 3.9,所以你必须使用旧版本。
另一种解决方法是切换到Chrome。
答案 1 :(得分:0)
在我的情况下,唯一的解决方案是:
Install chromedriver in a path that is in $PATH (/usr/bin or /bin)
并在您的测试课程中使用:
$capabilities = DesiredCapabilities::chrome()
它与执行Selenium标准方式一起工作:
java -jar selenium-server-standalone-3.14.0.jar
答案 2 :(得分:0)
我的Ubuntu版本有不同的情况。 18.x:
供应商文件已经有好几年了,我必须将供应商折叠起来并用php composer.phar require facebook/webdriver
来为我的PHP库重建它。
selenium-server-standalone-x.jar和chromedriver的版本不匹配。因此,下载更多版本并尝试,最终您将获得一对工作。