2016-03-20 2 views
1

Ссылка, которую я хотел бы щелкнуть, вводится пользователем. Например пользователь вводит для переменной дорожки, «Тампа-Бэй Даунс»Как получить Python и Selenium, чтобы щелкнуть ссылку angularjs, сопоставляя ссылку с текстом ввода пользователя?

Мой питон тест Селен программа будет искать код ниже:

<a ng-click="updateFavorite()(raceInfo.trackAbbr); $event.stopPropagation();">EV 
    i class="my-icon-favorite-fill my-icon-favorite-fill_active" ng-class="{ 
    'my-icon-favorite-fill' : !showActionFeedback, ...onFeedback, 'rotating spinner' : 
    showActionFeedback}" update-favorite-action-feedback="" qa-label="race-favorite-icon"> 
    ::before 
    </i> 
</a> 
<span class="ng-binding" ng-bind="::raceInfo.trackName" qa-label="race-track-name"> 
Tampa Bay Downs</span> 
</td> 

Успешный код будет найти входные слова «Tampa Bay Downs », а затем щелкните по нему, чтобы активировать действие angularjs, которое приведет к открытию отдельной страницы, что является желаемым действием.

Я попытался найти ссылку, используя правильный xpath без успеха.
Я также попытался это, но безуспешно:

try: 
    element = driver.find_element_by_css_selector("a[qa-label="+track+"]") 
except: 
    print "error finding css selector for track" 
+0

Вы можете попробовать xpath с '" // span [содержит (., '{}')]/Previous-sibling :: a ".format (track)' или использовать имя класса, чтобы быть более конкретным " // span [@ qa-label = 'race-track-name' и содержит (., '{}')]/previous-sibling :: a ".format (track)' –

+0

Также не используйте обложки, кроме операторов , поймайте то, что вы ожидаете. –

+0

Спасибо за быстрый ответ (и предложение) Padraic, я даю вам попробовать. – klitz1967

ответ

1

Вы можете выбрать используя xpath с помощью предшествующей-родственного найти a перед размахом тега, который содержит название дорожки, т.е. Tampa Bay Downs:

"//span[contains(.,'{}')]/preceding-sibling::a".format(track) 

Или более конкретно, используя имя класса диапазон:

"//span[@qa-label='race-track-name' and contains(.,'{}')]/preceding-sibling::a".format(track) 
Смежные вопросы