PHPUnit/Selenium 无法找到 *any* 元素
Posted
技术标签:
【中文标题】PHPUnit/Selenium 无法找到 *any* 元素【英文标题】:PHPUnit/Selenium unable to find *any* elements 【发布时间】:2019-12-19 06:12:24 【问题描述】:我正在尝试使用 phpUnit 和 Selenium 向我的 Symfony 4 项目添加一些简单的测试。问题是不可能找到任何 html 元素,这让我抓狂。
我的测试:
class WebTest extends PHPUnit_Extensions_Selenium2TestCase
protected function setUp()
$this->setBrowser('firefox');
$this->setBrowserUrl('http://localhost:8000');
public function testPageOnline()
$this->url('/');
$this->assertEquals('Home page', $this->title());
public function testHasForm()
$this->url('/');
$action = $this->byCssSelector('form')->attribute('action');
$this->assertEquals('message', $action);
$name = $this->byName('name');
$dob = $this->byName('dob');
// Verify these input boxes are empty
$this->assertEquals('', $name->value());
$this->assertEquals('', $dob->value());
第一个测试(“testPageOnline”)总是成功,但第二个总是失败,无论我尝试什么样的变体。我的html代码没什么特别的,没有javascript什么的,就是一个静态页面:
<form action="message" method="POST">
<div class="row p-2">
<div class="col-2"><label for="name">Name:</label></div>
<div class="col-2"><input type="text" name="name"></div>
</div>
<div class="row p-2">
<div class="col-2"><label for="dob">Date of birth:</label></div>
<div class="col-2"><input type="text" name="dob"></div>
</div>
<div class="row p-2">
<div class="col-2"><label for="car">Car</label></div>
<div class="col-2">
<select name="car">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
</div>
</div>
<div class="row p-2">
<div class="col-2"><label for="message">Message:</label></div>
<div class="col-2"><input type="text" name="message" /></div>
</div>
<div class="row p-2">
<div class="offset-1 col-3">
<button type="submit" id="post" class="btn btn-block btn-dark">Post</button>
</div>
</div>
</form>
PHPUnit 输出:
Sebastian Bergmann 及其贡献者的 PHPUnit 7.5.14。
运行时:PHP 7.3.8-1+ubuntu18.04.1+deb.sury.org+1 配置: /home/xxxx/capsearch/phpunit.xml
测试默认.E 2 / 2 (100%)
时间:5.72 秒,内存:4.00 MB
有 1 个错误:
1) WebTest::testHasForm InvalidArgumentException: Element not found.
谁能帮我找出问题所在?我尝试使用不同的选择器(类、ID、名称)找到不同的元素,并且我 100% 确定它在正确的页面上,因为第一个测试通过了。
【问题讨论】:
【参考方案1】:我在这个 GitHub 帖子上找到了解决方案:https://github.com/SeleniumHQ/selenium/issues/5539
我使用的是 Selenium 3.9,显然这已损坏,我应该使用带有“-enablePassThrough false”标志的 3.8.1。现在可以了!
【讨论】:
以上是关于PHPUnit/Selenium 无法找到 *any* 元素的主要内容,如果未能解决你的问题,请参考以下文章
PHPUnit + Selenium`InvalidArgumentException:找不到元素`
将带有梨的 PHPUnit Selenium 安装到 Windows 中
如何在 phpunit selenium 测试中删除元素的属性?
$stateProvider resovle 无法找到的原因
“An SSH installation couldn‘t be found“ - VScode无法远程接连Linux - Visual Studio Code - Insiders