私は PHP/MySQL/jQuery でアプリケーションを構築しています。アイテムのリストがユーザーに表示され、下部に新しいアイテムを追加するための空白のフィールドが表示されます。データをデータベースに保存し、「新しい」行を、入力したテキストと編集ボタンを含む通常の行に置き換える Ajax ぼかしイベントがあります。編集ボタンをクリックすると、テキストが入力に戻ります。これらはすべて、item_n や edit_n などの ID を持ちます。ここで、n はデータベース内の ID です。私が本当に求めているのはnです。
Selenium を使用して (私は Web ドライバーに焦点を当ててきましたが、IDE を使用することにオープンです)、新しいアイテムを作成し、編集ボタンをクリックして変更したいのですが、の ID がわかりません。編集ボタン。
新しい行を作成するテストを作成し、assertTextPresent を使用してそこにあることを確認できましたが、新しい行の ID (item_n になります) を取得する方法が見つかりません。
:contains を使用してみましたが、常に空の文字列が返されます。一般的なものから特定のものまで、いくつかの CSS および Xpath セレクターを試しました。
$elem = $this->_session->element('css', 'div.item_row div.item_title:contains("'.$new_item.'")');
$elem = $this->_session->element('xpath', '//div:contains("'.$new_task.'")');
また、リストの最後から 2 番目の要素を取得しようとしましたが (最後の要素は新しい行フィールドであるため)、並べ替えに頼る必要はありません。
以下の質問は、Selenium RC が JavaScript を呼び出すことができることを示しています: Selenium RC: 要素に特定の属性があるかどうかを確認する方法は?
Web Driver が Selenium RC の後継であることは知っていますが、Web Driver が上記のような RC コマンドをサポートしているかどうかはわかりません。とは言え、とにかくやってみた。ID を取得するために作成した JavaScript 関数は null を返します。私は Selenium の外部で関数をテストしたので、機能していることがわかります。
私は Facebook PHP Web Driver の実装を使用していますが、それと結婚していません: https://github.com/facebook/php-webdriver
どんな助けでも大歓迎です。ありがとうございました。