1

次のコードの実行:

<?php

class InheritedFeatureContext extends Behat\MinkExtension\Context\MinkContext
{
    /**
     *Simulates hovering over a link
     *
     * @When /^I mouse over "([^"]*)"$/
     */
        public function iMouseOver($link)
        {
        $this->getSession()->getPage()->findLink($link)->mouseOver();
        }

    /**
     *Waits for the appearence of a drop down
     *
     * @Then /^I wait for the suggestion box to appear$/
     */
    public function iWaitForTheSuggestionBoxToAppear()
    {
        $this->getSession()->wait(5000, "$('.suggestions-results').children().length > 0");
    }
}

エラーメッセージが生成されます:

  TypeError: $ is not a function

を参考に:

$this->getSession()->wait(5000, "$('.suggestions-results').children().length > 0");

このコードは、以前は問題なく機能していました。何か案は

コンテキスト: これは Behat/Mink 機能の一部です

4

4 に答える 4

2

おそらくjQueryを含めていませんが、ここで使用しようとしています:

$this->getSession()->wait(5000, "$('.suggestions-results').children().length > 0");

wait() メソッドは、2 番目の引数として JavaScript を受け入れます。スクリプトが true と評価されるまで待機します (最初の引数として渡される最大ミリ秒数)。

于 2012-08-16T08:20:13.373 に答える
1

私が間違っていなければ、このコードはサイトの behat mink の例からのものです。

その例では、http://en.wikipedia.org/wikiをベース URL として使用しており、ウィキペディアには jquery スクリプトが添付されています。あなたの場合、URLの場所にjqueryが含まれているかどうかを確認しましたか

于 2012-10-01T11:27:11.423 に答える
0

ほとんどの場合、jQuery を含めていません。

この Mink テストをサポートするためだけに jQuery をプロジェクトに追加したくない場合は、行を次のように変更してみてください。これにより、同じことが実現されますが、jQuery は使用されません。

$this->getSession()->wait(5000, "document.querySelector('.suggestions-results').children.length > 0");

于 2014-02-24T04:33:52.890 に答える