2016-12-20 3 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> 

Как автоматизировать это селен?

+0

Вы пытались использовать свойство 'index ', но оно не работает, поэтому вы хотите использовать' свойство индекса' ... 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 

Я рекомендую использовать первый пример по ng-click стоимости.

0

Вы можете использовать xpath в Selenium для однозначного выбора нужной ссылки внутри div. Ниже приведены некоторые примеры XPaths, которые могут быть использованы:

//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')] 

Если вы хотите использовать индекс/предикат, вы можете использовать следующие XPaths. Однако этот подход может быть ненадежным, особенно если в будущем может измениться порядок div.

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

Пожалуйста, дайте мне знать, если я неверно истолковал ваш вопрос.

Смежные вопросы