2017-01-16 2 views
1

私はpythonセレンを使用してこのhtml linkの中で 'Click Me Please'というテキストを選択してクリックしたいと思います。python seleniumを使って一意の識別子を持たないhtmlページのリスト内にあるテキストをクリックする方法は?

問題は、アイテムに固有の識別子がなく、リスト内にあることです。

特定のHTMLコードは次のようになります。

試み1

driver.get("http://stackoverflowtest.site44.com/") 
driver.find_element_by_link_text("Click Me Please").click() 
#>>Message: u'no such element: Unable to locate element: {"method":"link text","selector":"Click Me Please"}\n (Session info: chrome=55.0.2883.95)\n (Driver info: chromedriver=2.24.417412 (ac882d3ce7c0d99292439bf3405780058fcca0a6),platform=Mac OS X 10.11.6 x86_64)' 

試み2

driver.get("http://stackoverflowtest.site44.com/") 
driver.find_element_by_link_text("<!-- react-text: 496 -->Click Me Please<!-- /react-text -->").click() 
#>>Message: u'no such element: Unable to locate element: {"method":"link text","selector":"<!-- react-text: 496 -->Click Me Please<!-- /react-text -->"}\n (Session info: chrome=55.0.2883.95)\n (Driver info: chromedriver=2.24.417412 (ac882d3ce7c0d99292439bf3405780058fcca0a6),platform=Mac OS X 10.11.6 x86_64)' 
:ノー成功を収めて、次の方法を試してみた

<li class="tile no-tile-status both price-suggestion-high"> <div class="date"> <span class="day-number"> <!-- react-text: 496 -->Click Me Please<!-- /react-text --> </span> </div> <div class="price"><span> $529 </span></div> <div class="price-suggestion-highlight"></div> </li> 

いいえTE:私はまた、次のHTML要素として、リスト内の他の日付をクリックすることができるようにしたい:

<li class="tile no-tile-status both price-suggestion-high"> <div class="date"><span class="day-number"><!-- react-text: 511 -->18<!-- /react-text --></span></div> <div class="price"><span>$533</span></div> <div class="price-suggestion-highlight"></div> </li> 

<li class="tile no-tile-status both price-suggestion-high"> <div class="date"><span class="day-number"><!-- react-text: 525 -->20<!-- /react-text --></span></div> <div class="price"><span>$569</span></div> <div class="price-suggestion-highlight"></div> </li> 

答えて

1

driver.find_element_by_xpath('//span[@class='day-number' and text()='Click Me Please']') 

ジャストノート::XPathはトリックを行いますので、私はそれがパフォーマンスが優れているのですとCSSセレクタを使用してお勧めしますが、ここであなたはそれのテキストでそれを見つける必要があり、それは何もしない]をクリック。 ..:/そうしないex何も起こらないようにしてください...

0

あなたはXPathを使用することができるはずです。

driver.find_element_by_xpath('//a[text()="Click Me Please"]') 
+0

アイテムがリストにあるので、私は 'a'タグ名を 'li'に置き換えてあなたの提案を変更しましたが、これはうまくいかないようです:driver.find_element_by_xpath( 'li [text()= "Click Me Please"] ')。 'a'タグはリストの他の項目には存在しないので、 'a'タグは使用できません。 – Chris

0

Daveの答えがほとんどですこの方法で参照されているので、おそらく//a//liに置き換えなければならないことを除いて、正しいです。

OK、より密接にそれを見て、問題は、それが「テキストを反応」が含まれるとリンクテキスト等、変更することができ

私が使用してお勧めしたいということです - 通常

.find_element_by_partial_link_text("Click Me Please") 
関連する問題