2016-03-23 9 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> 

上記のコードでは、[削除]ボタンをクリックします。問題は、Repoが追加されるたびに、リポジトリのクラス名、表示テキストのクラス名、および削除のクラス名ボタンは、レポ表示名を除くすべてのレポスですべて同じです。Python Selenium特定のテキストの横にあるボタンをクリックする方法は?

私がしたいのは、特定のレポ名の横にある削除ボタンをクリックすることです。 私は.//span[text() = "RepoName"]を試しましたが、これはその横のボタンではなく、レポ名を検出するだけです。

私はセレンにはかなり慣れています。私はそれについてどうやって行くのか混乱しています。

答えて

1

あなたが特定のRepoX後にボタンのdivをしたい場合は、スパンを見つけ、Buttonクラスで、次のdivを得る:

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

あなたは、クラス名を知りませんでしたが、あなたはそれが次であることがわかっている場合DIV:

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

は '使用する場合完全に働いた.//span [text()= "'+名前+'"] /フォロー::: div [@クラス= "ボタン"] ''xpathの。 – Priyanka

+0

心配することなく、 'str.format'' 'を使用することもできます。[span(text)= "{}"]/following :: div [@ class = "Button"]'。format(s) –

0

ちょうど "Repo1" テキストの後に "削除" ボタンをクリックしてください:

driver.find_element_by_xpath("//span[.='Repo1']/following::div[.='Delete'][1]").click() 
関連する問題