1

私は 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

どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

4

要素の IWebElement インスタンスを作成します。次に、IWebElement の id 属性を取得します。以下は、同じ C# コードです。

IWebElement element = driver.FindElement(By.XPAth("//XpathOfTheElement"));
string id = element.GetAttribute("id")

これが役立つことを願っています

于 2013-02-05T10:12:02.977 に答える