2016-04-05 2 views
0

をクリック反復表の行の画像を介して、私は複数のセル(<code>td</code>)を含有する複数の行(<code>tr</code>)を持つテーブルを持っているハイパーリンク

セルの一つは、私が反復するリンクする画像ハイパーリンク

が含ま表の行をクリックして、各行の画像を含むすべてのセルをセレンを使用してクリックします。

<table class="thetable" cellspacing="1" > 

     <thead></thead> 
     <tbody> 

      <tr class="visibleRow"> 


       <td class="Item"></td> 
       <td class="modified" style="color: gray;"></td> 
       <td class="imageHyperlink"> 
        <a href="#" role="button" title="Edit the item"> 
         <img src="web/service/editRow.gif" /> 

        </a> 
       </td> 
      </tr> 

      <tr class="visibleRow"></tr> 

      <tr class="anotherow" style="display: none;"></tr> 

      <tr class="visibleRow"></tr> 

      <tr class="editorRow" style="display: none;"></tr> 
     </tbody> 
</table> 

私は反復処理したい行だけが、クラス名visibleRowを含むものであり、かつ上でクリックする必要がある唯一の細胞である:

例えば、これは私のテーブルの1つですクラス名を含むセルimageHyperlink

私は、visibleRowクラスの行を反復処理するforループを実装し、セル変数の中にセルクラス名を格納します。そしてセルをクリックしてください:

for row in driver.find_elements_by_css_selector("tr.visibleRow"): 
    cell = row.find_elements_by_class_name("imageHyperlink") 
    cell.click() 

それはセルがクリック可能な項目ではありませんようだと、私はこのエラーを取得していますが:

AttributeError: 'list' object has no attribute 'click'

私はこの問題を解決するにはどうすればよいですか?

答えて

1

row.find_elements_by_class_name("imageHyperlink")(複数の名前要素sに注意してください)は、あなたのケースでは0または1つの要素を持つリストを返します。反復の第二レベルを追加問題を解決する必要があります。

for row in driver.find_elements_by_css_selector("tr.visibleRow"): 
    for cell in row.find_elements_by_class_name("imageHyperlink"): 
     cell.find_element_by_tag_name("a").click() 

クラスimageHyperLinkを有する子供の上内側ループ反復は、あなたの例では、これらのうちのいずれか1つ(目に見える最初の行のためのもの)またはnone(他のもののためのもの)があります。次に、最初の<a>子要素を見つけてクリックします。

+0

これはエラーを修正しましたが、イメージのハイパーリンクをクリックしていないことに注意してください。 (私は置くのを忘れたイメージタグを付け加えました)。どんな解決策ですか? –

+0

ああ;私はハイパーリンクが 'td'を完全に埋めると仮定して作業していたので、後者をクリックすると動作します。コードを編集して、ネストされた要素をクリックします。 –

+0

イェップ私はあなたに質問をした後、それを理解しました。私はタグとサブタグを扱う方法を知っていますが、ありがとうございます –

関連する問題