2016-09-30 12 views
1

私はPythonでセレンを使ってスクリプトを作成する方法を学びたいと思っています。ほとんどの場合、私は "静的要素"で練習していましたが、今は動的なIDを持つ要素を選択したいのですが、問題はそのIDに部分的な静的部分がないことです。この種の要素をSeleniumで見つける方法

彼らは別の「ID」、静的なこの時間を持っているが、私はセレン私は2つの異なるものを試してみましたが、セレンは、この要素

にこの部分を見つけることができないとPythonでそれを使用する方法がわからないしかし、要素の:

<div class="table-cell show-plus" ng-class="{'show-plus': !user.deleted &amp;&amp; (authentication.user.isManager || user.isMe) &amp;&amp; (!group.isExchange || !ctrl.isPast(day)), 'no-events': !_events.length, 'is-today': day === ctrl.todayString}" ng-repeat="day in ctrl.currentDays" ng-click="ctrl.addShift(user, day, false, group.grouping, group.isExchange, group.key)" lvl-drop-target="true" on-drop="ctrl.dropped(dragEl, dropEl, event, 'week')" data-user-id="30308" data-is-exchange="false" data-shift-date="2016-09-29" id="5aa270ea-180f-2861-c97a-506c76cee386"><!----><div data-shift-id="134514" data-is-exchange="false" ng-repeat="event in ::(_events = (user.events[day] | filter:ctrl.filterOutMultiday | orderBy:['sort', 'dtstart'])) track by event.key" lvl-draggable="true" augment-draggable="" class="shift s12B835 published can-be-selected" ng-class="::{ 
       leave: event.type === 'leave', 
       staging: event.status === 'planning', 
       cancelled: event.cancelled, 
       openend: event.isOpenEnded, 
       published: event.status === 'published', 
       unpublished: event.status !== 'published', 
       unavailability: event.type === 'availability', 
       'can-be-selected': event.canBeSelected 
      }" draggable="true" id="c9d08710-daef-cdf7-9d7b-c4ceb13541a6"><!----><div class="shift-selection" ng-click="ctrl.stopEventPropagation($event)" ng-if="::event.canBeSelected"><div class="checkmark-wrapper"><label class="checkmark"><input type="checkbox" ng-model="ctrl.selectedEvents[event.id]" ng-change="ctrl.selectionChanged()" class="ng-pristine ng-untouched ng-valid ng-empty"> <span></span></label></div></div><!----><div class="shift-details" ng-click="ctrl.openShift(event, group.isExchange, $event)" ng-class="{'right-icon': event.showOfferedShiftIcon || event.showAvailableShiftIcon || event.showTimeoffIcon}"><div class="ellipsis" title="9:00A - 5:00P • 8H">9:00A - 5:00P • 8H <img style="margin-top:-2px" ng-show="event.tagId &amp;&amp; event.status !== 'planning'" src="/assets/svg/Icons/16/shift-repeat-white-8afc52.svg" class="ng-hide"> <img style="margin-top:-2px" ng-show="event.tagId &amp;&amp; event.status === 'planning'" src="/assets/svg/Icons/16/shift-repeat-gray-6d0e14.svg" class="ng-hide"></div><div class="ellipsis duration" ng-show="event.position">Design <span class="show-on-collapsed">• Carl Fairclough</span></div><div class="ellipsis duration ng-hide" ng-show="!event.position">Carl Fairclough</div><span class="shift-details-status ng-hide" ng-show="event.showOfferedShiftIcon"><img src="/assets/svg/Icons/24/shift-offer-white-cce33c.svg"> </span><span class="shift-details-status ng-hide" ng-show="event.showAvailableShiftIcon"><img src="/assets/svg/Icons/24/shift-available-white-c55aba.svg"> </span><span class="shift-details-status ng-hide" ng-show="event.showTimeoffIcon"><img src="/assets/svg/Icons/24/shift-timeoff-white-0cab28.svg"></span></div></div><!----></div> 

<div data-shift-id="134514" data-is-exchange="false" ng-repeat="event in ::(_events = (user.events[day] | filter:ctrl.filterOutMultiday | orderBy:['sort', 'dtstart'])) track by event.key" lvl-draggable="true" augment-draggable="" class="shift s12B835 published can-be-selected" ng-class="::{ 
       leave: event.type === 'leave', 
       staging: event.status === 'planning', 
       cancelled: event.cancelled, 
       openend: event.isOpenEnded, 
       published: event.status === 'published', 
       unpublished: event.status !== 'published', 
       unavailability: event.type === 'availability', 
       'can-be-selected': event.canBeSelected 
      }" draggable="true" id="c9d08710-daef-cdf7-9d7b-c4ceb13541a6"><!----><div class="shift-selection" ng-click="ctrl.stopEventPropagation($event)" ng-if="::event.canBeSelected"><div class="checkmark-wrapper"><label class="checkmark"><input type="checkbox" ng-model="ctrl.selectedEvents[event.id]" ng-change="ctrl.selectionChanged()" class="ng-pristine ng-untouched ng-valid ng-empty"> <span></span></label></div></div><!----><div class="shift-details" ng-click="ctrl.openShift(event, group.isExchange, $event)" ng-class="{'right-icon': event.showOfferedShiftIcon || event.showAvailableShiftIcon || event.showTimeoffIcon}"><div class="ellipsis" title="9:00A - 5:00P • 8H">9:00A - 5:00P • 8H <img style="margin-top:-2px" ng-show="event.tagId &amp;&amp; event.status !== 'planning'" src="/assets/svg/Icons/16/shift-repeat-white-8afc52.svg" class="ng-hide"> <img style="margin-top:-2px" ng-show="event.tagId &amp;&amp; event.status === 'planning'" src="/assets/svg/Icons/16/shift-repeat-gray-6d0e14.svg" class="ng-hide"></div><div class="ellipsis duration" ng-show="event.position">Design <span class="show-on-collapsed">• Carl Fairclough</span></div><div class="ellipsis duration ng-hide" ng-show="!event.position">Carl Fairclough</div><span class="shift-details-status ng-hide" ng-show="event.showOfferedShiftIcon"><img src="/assets/svg/Icons/24/shift-offer-white-cce33c.svg"> </span><span class="shift-details-status ng-hide" ng-show="event.showAvailableShiftIcon"><img src="/assets/svg/Icons/24/shift-available-white-c55aba.svg"> </span><span class="shift-details-status ng-hide" ng-show="event.showTimeoffIcon"><img src="/assets/svg/Icons/24/shift-timeoff-white-0cab28.svg"></span></div></div> 

私は、この要素を選択するための唯一のものを使用することです:

> data-shift-id="134514" 

私はIDとXPathが、同じ再wwithさまざまな方法を試してみました最後に悲しい: "この要素を見つけることができません"

あなたはどんなアイデアを持っていますか?

+0

。あなたのウェブサイトを共有してください –

+0

私はそれがクラスでうまくいくとは思っていません。申し訳ありませんが、私はウェブサイトを共有できません。 –

+0

ngリピートタグがあります。 ng repeatを使用します。 –

答えて

0

あなたはこのように属性を使用してcssSelectorを構築することができます。

driver.find_element_by_css_selector("Yourtag[attributeName='Your AttributeValue']"); 

をコードスニペット以下の特定のケースでの使用のために:あなたは、クラスを使用することができます

driver.find_element_by_css_selector("div[data-shift-id='134514']"); 
+0

あなたの助けてくれてありがとう、私はあなたの考えを試みたが、それはまだ悲しいことに、この要素を見つけることができません。 –

+0

例外がスローされますか?あなたは検査されたHTMLコード部分を提供できますか? –

+0

例外はNoSuchElementです。あなたのHTMLをもっと提供するために投稿を編集しました。 –

関連する問題