1

chibimagic.org github ページで提供されている WebDriver-PHP ライブラリで PHPUnit と selenium を広く使用しています。私はこの自動化をうまく機能させましたが、問題に出くわしましたが、この問題が原因で自動化を開始したことを完了できなくなるまで回避しました。

テストする Web サイト (実際には Web アプリケーション) の特定のページに複数の選択ボックスがある場合、最初の選択ボックスのみを選択してそのオプションを変更できますが、その後に続く残りの選択ボックスは変更できません。 get_element を使用して正しい選択ボックスを個別に選択すると、最初の選択ボックスのみが選択され、それ以上は選択されません。そのページでトランザクションを完了するために選択する必要がある選択ボックスを選択できない HTML ページを含めます。

この機能は他のページでも機能しますが、テスト中の特定の Web ページだけでこの問題が発生することに注意してください。このページは別の会社によって単独で管理および開発されているため、このページの HTML コードを変更することはできません。したがって、HTML を変更することはできず、複数の選択ボックスを選択できるページと複数の選択ボックスを正常に選択できないページの違いはわかりません。

get_element を使用するときは、XPath、CSS、および標準セレクターを使用します。これは、正しくコーディングしていないと思われる理由を排除するために、問題なく要素を選択するページに使用します。コーディングは問題ありませんが、ライブラリは HTML コードの特定の状況で正しく動作していません。

注: これは、複数の選択ボックスがある多くのページで発生します。HTML のサンプルへの pasteit リンクを参照してください。

添付の HTML ドキュメント: 問題のサンプル HTML: CreateDriver.html - 複数の選択ボックスを選択できない (最初の選択ボックスのみを選択する) http://pastebin.com/zdhSJLh6

問題ありません HTML サンプル: TripScreen.html - 複数の選択ボックスを選択できます http://pastebin.com/6JPAZZG3

4

1 に答える 1

1

次のように、値に基づいてオプションのみを選択するのは、ライブラリのバグです。

//option[45]

異なる選択メニューに同じ値のオプションがある場合、他のメニューの意図したオプションではなく、最初の選択メニューのオプションが選択されます。

select_value($value)Webdriver.phpの関数を

public function select_value($value) {
    $this->get_next_element("//option[@value=" . WebDriver::QuoteXPath($value) . "]")->select();
}

 public function select_value($value) {
    $options = $this->get_options();
    foreach ($options as $option) {
        if ($option->get_value() == $value) {
            $option->click();
            break;
        }
        else {
            continue;
        }
    }

}
于 2013-09-12T16:47:31.563 に答える