2016-04-14 22 views
0

Bu sayfada, span sınıfının iki örneği vardır = "channel-name". Aynı düzeydeki bu span sınıflarının her birinde, div class = "contract ng-scope ng-isolate-scope ui-sürüklenebilir ui-sürüklenebilir tutamaç" birden çok örneği vardır. Ve bunların her birinin altında, HTML kod özünün son satırı olan tüm düğme sınıfı metnini (yani B) almaya çalışıyorum.Selenium/Python: Bir sınıf içinde yer alan düğmenin tüm örneklerini, başka bir sınıfla aynı düzeyde nasıl yakalarım?

HTML Kodu:

<span class="channel-name"> 
<div class="contract ng-scope ng-isolate-scope ui-draggable ui-draggable-handle" ng-repeat="contract in data.channel.contracts track by $index" drag-data="contract" mit-draggable=""> 
    <div class="ng-isolate-scope ui-droppable" ng-class="{'invisible': atMaxContractsPerChannel(data.channel)}" drop-success="addToContractTop" drop-data="{verticalSeq: $index, contract: contract, priority: data.priority}" mit-droppable=""> 
    <div class="drop-zone-placeholder"></div> 
    <mit-contract class="ng-isolate-scope" data="{verticalSeq: $index, contract: contract, channel: data.channel, currentProgram: data.currentProgram, programBackup: data.programBackup}"> 
     <div class="ibox-content no-margins " tooltip-placement="top" tooltip-class="beacon-body-uib-tooltip" tooltip-append-to-body="true" uib-tooltip-template="ui.views.infoTooltip" tooltip-is-open="errorAndHovering" tooltip-trigger="none" mit-err="{errs:[{event:'contract_0-0', context:'validateProgram'}], errClass:'mit-err-right-border'}"> 
     <button class="name btn-link ng-binding ng-isolate-scope" tooltip-class="beacon-body-uib-tooltip" tooltip-placement="left" tooltip-append-to-body="true" uib-tooltip="Edit" ng-disabled="disableEdit()" mit-mini-modal="" ng-click="editContract(contract)">B</button> 

My piton kodu. Tek yapmanız gereken doğru kanal adını aradığından emin olmak için sütun adını kontrol etmek ve eğer altında ilk düğme adını almak ve geri döndürmek için, yanlış yoldan gidiyorum biliyorum, herhangi bir yardım büyük ölçüde takdir!

def get_contract_name_in_inuring_column(self, column_name): 
     elements = self.page_loc.find_elements_by_xpath("//span[@class='channel-name']") 
     count = 0 
     for element in elements: 
      if element.find_elements_by_xpath(".//input[@name='name']")[0].get_attribute('value') == column_name: 
       return self.page_loc.presence_of_all_css('button[ng-click="editContract(contract)"]')[count].text 
      count += 1 
+0

**. // button [@ class = 'name btn-link ng-binding ng-isolate-scope'] **. FindElement yerine FindElements kullanarak bu XPath deneyin. Bir Listeyi 'da saklayın. Sonra saklanan listeyi yineleyin ve metni alabilirsiniz. Umarım işe yarayabilir. – Sudeepthi

+0

@Sudeepthi maalesef sayfadaki tüm düğme metinlerini döndürür, belirli iki düğmeyi değil, sınıf sınıfıyla aynı düzeyde div sınıfından sonra gelirim. – user4659009

+0

Üzgünüm Sadece 2 düğmenin bu sınıf adına sahip olduğunu düşündüm. Başka bir şey deneyeyim ve geri döneyim. – Sudeepthi

cevap

1

Birinci ve ikinci düğmeleri almak için, burada XPath.