2016-03-23 13 views
1
<div class = "Repo List"> 
    <div class = "Repo"> 
     <div class = "Text"> 
      <span class = "Display Text">Repo1</span> 
     </div> 
     <div class = "Button"> 
      <div class = "Click Button">Delete</div> 
     </div> 
    </div> 

    <div class = "Repo"> 
     <div class = "Text"> 
      <span class = "Display Text">Repo2</span> 
     </div> 
     <div class = "Button"> 
      <div class = "Click Button">Delete</div> 
     </div> 
    </div> 

    <div class = "Repo"> 
     <div class = "Text"> 
      <span class = "Display Text">Repo3</span> 
     </div> 
     <div class = "Button"> 
      <div class = "Click Button">Delete</div> 
     </div> 
    </div> 
</div> 

Yukarıdaki kodda, Sil düğmesini tıklatmak istiyorum, sorun her Repo eklendiğinde, repo'nun sınıf adı, görünen metnin sınıf adı ve silme sınıfının adıdır. Repo görünen adı haricinde tüm reposlar için aynıdır. Tek yapmak istediğim, belirli bir repo adının yanındaki silme düğmesine tıklamaktır. .//span[text() = "RepoName"]'u denedim, ancak bu yalnızca repo adını ve yanındaki düğmeyi algılamaz.Python Selenium Belirli bir metnin yanındaki tuşa nasıl tıklanırsınız?

Ben selenyum oldukça yeni ve bu konuda gitmek için kafam karıştı. Belirli bir RepoX sonra düğme div istiyorsanız

cevap

1

, yayılma bulmak ve Düğme sınıfı ile aşağıdaki div olsun:

.xpath("//span[text()='Repo3']/following::div[@class='Button']") 

sınıf adını bilmiyordum ama bunu yanında biliyorsanız div:

.xpath("//span[text()='Repo3']/following::div[1]") 
+0

''kullanıldığında mükemmel çalıştı .//span [text() = "'+ Ad +'"]/aşağıdaki :: div [@ class = "Button"] ''için xpath. – Priyanka

+0

Endişelenmenize gerek yok, ayrıca 'str.format'' .// span [text() = "{}"]/aşağıdaki :: div [@ class = "Button"] biçiminde de kullanabilirsiniz. –

0

sadece "Repo1" metinden sonra "Sil" düğmesini tıklayın:

driver.find_element_by_xpath("//span[.='Repo1']/following::div[.='Delete'][1]").click() 
İlgili konular