0

Webページにこのようなコンテンツがいくつかあります。

 Appname       Description      Price     Part Number      Validity
 App1           some desc1     25         JH32            30
 App2           some desc2     250        PB36            180
 App2           some desc3     20         QL76            10
 App3           some desc4     50         KQ3J            30

私のアプリケーションは、アプリを起動した後、ユーザーがアプリ名を入力して、セレンがこのサイトでその特定のアプリ名を検索するようなものです。このステップを超えて欲しいのは、次のことです。

検索するアプリ名が何であれ、セレンはそのフィールドに対応する値を取得する必要があります。たとえば、セレンは価格、有効性、および部品番号フィールドの値を取得する必要があります。classname、tagname、id などの属性を使用して値を取得するためにセレンを試しました。

アプリケーションの開始時に検索ボックスでユーザーがアプリ名として何を指定するかを予測できないため、ここでは使用できません。

サイトのフィールド (価格) をクリックすると得られるサンプル HTML コード。これにはfirebugを使用しました。そして、私はセレンにFirefoxブラウザを使用しています..

<td height="100%" class="ms-vb-title"><table height="100%" cellspacing="0" surl="" uis="512" cid="0x0100DFF86ACBE51BE549AA56639FCC32D7E0" ctype="Item" ms="0" csrc="" hcd="" couid="" otype="0" icon="icgen.gif||" ext="" type="" perm="0x1b03c4312ef" dref="sites/SoftwareDev/IAG/IAS/Lists/Unify Parts" url="/sites/SoftwareDev/IAG/IAS/Lists/Unify%20Parts/27_.000" id="27" ctxname="ctx1" onmouseover="OnItem(this)" class="ms-unselectedtitle"><tbody><tr><td width="100%" class="ms-vb"><a target="_self" onclick="GoToLink(this);return false;" href="/sites/SoftwareDev/IAG/IAS/Lists/Unify%20Parts/DispForm.aspx?ID=27" onfocus="OnLink(this)">MindMeister - 251-500 Pupil License<img height="1" border="0" width="1" alt="Use SHIFT+ENTER to open the menu (new window)." class="ms-hidden" src="/_layouts/images/blank.gif"></a></td><td><img width="13" alt="" style="visibility:hidden" src="/_layouts/images/blank.gif"></td></tr></tbody></table></td>

どうすれば私が言ったことを達成できますか?コメントをいただければ幸いです..

4

2 に答える 2

0

HTML やあなたのコードを見なければ、あなたが提供したテーブルは順序付けられた<table><tr><td>...</td><td>...</td></tr></table>形式で設定されていると思います。この仮定の下では、すでに使用しているコードを使用して appname を検索し、Web ドライバーの Xpath/Jquery (使用しているブラウザーに基づいて) の検索機能を使用して、<td>インデックスによって適切なデータ値を見つけることが<tr>できます。の子である appname 要素が見つかりました。要素を「選択」したら、ラベルの値を返し、それをコード内の変数に保存します。

于 2013-08-01T16:22:59.737 に答える
0

先に進む必要があるのがアプリ名だけの場合は、次のようにする必要があります。

  1. td表のセル ( ) にアプリ名が含まれている WebElement を特定します。
  2. 相対 xpath を使用して、次のテーブル セルを識別します。
  3. その表のセルからテキストを抽出します。
  4. 行全体に沿って手順 2 ~ 3 を繰り返します。

原理的にどのように動作するかを示す単純化された webdriver コードを次に示します。

WebElement td_appname = driver.findElement.ByLinkText("MindMeister - 251-500 Pupil License");
WebElement td_appdescription = td_appname.findElement.Byxpath("./../td[2]");
String appdescription = td_appdescription.getText();

ここで重要なのは、コードの 3 行目の xpath です。これは、非常に単純なテーブル構造 (table/tbody/tr/td) でのみ機能します。しかし、あなたのものはもっと複雑なので、Web サイトの構造に適した相対 xpath を考え出す必要があります。優れたブラウザーの開発者ツール (例: Firefox では、firebug と firepath を使用) を使用して DOM ツリーをよく見て、あるセルから次のセルに移動するために必要な xpath の種類を把握することをお勧めします。

于 2013-08-05T14:54:43.080 に答える