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 selenium2重复测试不起作用

如何在 phpunit selenium 测试中删除元素的属性?

$stateProvider resovle 无法找到的原因

“An SSH installation couldn‘t be found“ - VScode无法远程接连Linux - Visual Studio Code - Insiders