2016-12-20 6 views
0

以下は、コードとHTMLの構造がほぼ同じですが、違いはアラインメントだけです。私はちょうど特定のdiv内のリンク要素にアクセスしたいです。同じ構造のdiv内のリンクにアクセスする

私はindexプロパティを使ってdivを選択してアクセスしようとしました。しかし、それは動作していません。どのようにインデックスを正しく使用するかについては、任意のアイデアはありますか?

<div class="connections-table"> 

            <div class="connection-row layout-align-space-between-center layout-row" layout="row" layout-align="space-between center"> 

              <div flex="40" class="flex-40"></div> 

              <div flex="20" class="title text-center flex-20">Specialty</div> 

              <div flex="20" class="title text-center flex-20">Geography</div> 

              <div flex="20" class="title text-center flex-20">Total</div> 

            </div> 

            <div class="connection-row layout-align-space-between-center layout-row" layout="row" layout-align="space-between center"> 

              <div flex="40" class="label flex-40">Medical School</div> 

              <div flex="20" class="text-center flex-20"><a ng-click="list(provider.npi, 'medschool_specialty')" class="ng-binding">3</a></div> 

              <div flex="20" class="text-center flex-20"><a ng-click="list(provider.npi, provider.metrics.medschool_geo.label)" class="ng-binding">2</a></div> 

              <div flex="20" class="text-center flex-20"><a ng-click="list(provider.npi, 'medschool_total')" class="ng-binding">79</a></div> 

            </div> 

            <div class="connection-row layout-align-space-between-center layout-row" layout="row" layout-align="space-between center"> 

              <div flex="40" class="label flex-40">Residency</div> 

              <div flex="20" class="text-center flex-20"><a ng-click="list(provider.npi, 'residency_specialty')" class="ng-binding">19</a></div> 

              <div flex="20" class="text-center flex-20"><a ng-click="list(provider.npi, provider.metrics.residency_geo.label)" class="ng-binding">0</a></div> 

              <div flex="20" class="text-center flex-20"><a ng-click="list(provider.npi, 'residency_total')" class="ng-binding">104</a></div> 

            </div> 

            <div class="connection-row layout-align-space-between-center layout-row" layout="row" layout-align="space-between center"> 

              <div flex="40" class="label flex-40">Clients Nearby</div> 

              <div flex="20" class="text-center flex-20"><a ng-click="list(provider.npi, provider.metrics.clients_nearby_specialty_geo.label)" class="ng-binding">3</a></div> 

              <div flex="20" class="text-center flex-20"><a ng-click="list(provider.npi, provider.metrics.clients_nearby_geo.label)" class="ng-binding">112</a></div> 

              <div flex="20" class="text-center flex-20"><a ng-click="list(provider.npi, provider.metrics.clients_nearby_geo.label)" class="ng-binding">112</a></div> 

            </div> 

          </div> 

これを自動化する方法はSeleniumですか?

+0

あなたは 'index property'を使ってみしようとしましたが、うまくいかないので、' index property' ... hmm ... interesting :)あなたが試したコードを表示して、 – Andersson

+0

を処理するには、角度jsアプリケーションを使用しているようです。私はあなたにプレーンセレンの代わりに分度器を使用することをお勧めします – joinsaad

答えて

0

リンクが異なるので、ng-click属性の一意の値を使用するのが最適な方法です。

例:

a[ng-click*='part of uniques attr value'] 

a[ng-click*='medschool_geo'] 

それともインデックスを必要とするならば、同じレベルの要素に対してnth-of-type()を使用しています。

例:

.connections-table div:nth-of-type(2) div:nth-of-type(3) a 

Iはng-click値によって第一の例を使用することをお勧めします。

0

divの中で目的のリンクを一意に選択するために、セレンでxpathを利用することができます。使用可能ないくつかの例のXPathは、次のとおりです。

//div[text()='Medical School']/following-sibling::div/a[contains(@ng-click, 'medschool_total')] 

//div[text()='Residency']/following-sibling::div/a[contains(@ng-click, 'residency_total')] 

あなただけのインデックス/述語を使用する場合は、次のXPathを使用することができます。ただし、特にdivの注文が将来変更される可能性がある場合は、この方法は信頼性が低い場合があります。

//div[text()='Medical School']/following-sibling::div[3]/a 
//div[text()='Residency']/following-sibling::div[3]/a 

質問を誤解している場合は、教えてください。

関連する問題