1

テストにはphpunit3.7とseleniumを使用しています。テキストの強調表示機能をテストするために、div(テキストを含む)内の特定のx、y位置をクリックします。

moveTo()関数を試しましたが(を参照)、要素はPHPUnit_Extensions_Selenium2TestCase_Elementクラスのインスタンスですが、常にエラーが発生します。

$div = $this->byCssSelector('#texthighlight-instant_feedback div div');

if ($div instanceof PHPUnit_Extensions_Selenium2TestCase_Element) {
     $this->moveto(array(
        'element' => $div,
        'xoffset' => 100,
        'yofsset' => 5
     ));
     $this->click();
} else {
    throw new PHPUnit_Extensions_Selenium2TestCase_Exception('no instanceof PHPUnit_Extensions_Selenium2TestCase_Element');
}

さらに、「クリック」コマンドが存在しないか、サポートされていないようです。phpunit / seleniumを使い始めたばかりですが、他の誰かが要素内の特定の位置のクリックをシミュレートする方法を教えてくれることを願っていますか?ありがとう!

4

1 に答える 1

0

SessionCommand\MoveTo.php でソースコードを確認すると、そうすべきではないようです

$this->moveto(array(
    'element' => $div,
    'xoffset' => 100,
    'yofsset' => 5
 ));

代わりに:

$this->moveto($div);

ただし、BadMethodCallException: The command 'moveTo' is not exist or not supported yet. どの方法で呼び出しても、まだサポートされていません。

カーソルを移動したい理由: 要素を右クリックできるように...

編集:

コードを調べてみると、moveto ではなく moveTo を呼び出していることがわかりました。少なくとも、例外を取り除きました。ところで:私の提案はあなたの問題でまだうまくいくはずです。

click() でどのような問題が発生していますか? 2 つの異なる click() メソッドがあり、1 つはセッション ($this->click()) で、もう 1 つは要素 ($div->click) です。

編集2:

click() は、セッションで使用可能なコマンドとして初期化されていないようです。ボタンダウンとボタンアップが定義されています。最初にボタンダウンを使用してからボタンアップを使用すると、クリックが得られます。

私はまだ運が悪いです。buttondown と buttonup は連想配列を JSON パラメータとして Selenium サーバーに渡していないように見えるため、マウスの中ボタンまたは右ボタンをシミュレートできません。

とりあえず、Session.php に click as genericpost オプションを追加しました。

$this->click('button'=>2);

カーソルを移動した要素を右クリックします。

于 2012-11-29T14:20:30.890 に答える