Codeception $ I-&gt; click(<button text =“”>)导致:[ErrorException]未定义属性:DOMDocument :: $ tagName

时间:2016-11-28 17:06:26

标签: domdocument codeception

我正在使用Codeception 2.2.6来测试Laravel应用。我有一个简单的测试,打开一个带有表单的页面,填充一些字段,然后单击一个按钮。当我运行测试时,它工作正常,直到单击步骤,然后它失败并出现以下错误:

[ErrorException] Undefined property: DOMDocument::$tagName

堆栈跟踪显示错误来自clickButton中的Codeception\Lib\InnerBrowser.php方法:

/**
 * Clicks the link or submits the form when the button is clicked
 * @param \DOMNode $node
 * @return boolean clicked something
 */
private function clickButton(\DOMNode $node)
{
    $formParams = [];
    $buttonName = (string)$node->getAttribute('name');
    $buttonValue = $node->getAttribute('value');

    if ($buttonName !== '' && $buttonValue !== null) {
        $formParams = [$buttonName => $buttonValue];
    }

    while ($node->parentNode !== null) {
        $node = $node->parentNode;
        if ($node->tagName === 'a') {
            $this->openHrefFromDomNode($node);
            return true;
        } elseif ($node->tagName === 'form') {
            $this->proceedSubmitForm(
                new Crawler($node),
                $formParams
            );
            return true;
        }
    }
    return false;
}

我有其他类似的测试,使用点击不同页面没有问题。有人可以帮我找出导致错误的原因

1 个答案:

答案 0 :(得分:0)

问题是运行测试的页面不是有效的HTML。我的标签没有正确关闭。这导致Codeception的DOM爬虫失败。

编辑(请参阅下面的说明):

破解HTML具有这种基本结构:

    <div>  <!-- this should be inside the form -->
        <form> <!-- this should be outside the div -->
    </div>
    <button>The Button</button>
</form>