2013-05-30 7 views
6

ホバリング後に表示されるボタンをクリックします。そのHTMLは次のとおりです。セレンでホバリングした後に表示される要素をクリックする方法は?

<span class="info"></span> 

私はこのコードを使用:

import selenium.webdriver as webdriver 
from selenium.webdriver.common.action_chains import ActionChains 

url = "http://example.com" 

driver = webdriver.Firefox() 
driver.get(url) 
element = driver.find_element_by_class_name("info") 
hov = ActionChains(driver).move_to_element(element) 
hov.perform() 
element.click() 

これは、しかし働いていません。私はelement.click():

selenium.common.exceptions.ElementNotVisibleException: Message: \ 
u'Element is not currently visible and so may not be interacted with' 

任意の提案をしてくださいコードの最後の行に接続エラーが発生しましたか?

+0

エラーは正確に何ですか? – Arran

+0

@Arran、私は質問を編集しました。 – nutship

答えて

9

要素が表示されるまで待つ必要があります。

の3つのオプション:

  • コールtime.sleep(n)
  • 使用WebDriverWait私は2番目のオプションと一緒に行きたい

here、それはhereを示唆しているようにしてhere

UPD:唯一のオプションはexecute_script経由JSを使用して、ボタンをクリックすることでしたので、セレンを経由してホバリング、この特定のサイトで

は、まったく動作しませんでした:

driver.execute_script('$("span.info").click();') 

お役に立てば幸いです。

+0

提案してくれてありがとうございますが、実際には 'time.sleep'を試しましたが、そうではないようです。 – nutship

+0

「WebDriverWait」が正常に動作するはずです。問題がある場合は教えてください。 – alecxe

+0

ご迷惑をおかけして申し訳ありませんが、リンクを読む必要があります。私の問題は、私の場合の要素/ボタンがいつでも見える/アクセス可能であるという点で、私の問題が異なると思う。ページが読み込まれると即座にその上にカーソルを置くことができます。間にajax/jsコードの実行はありません。私は 'find_element_by'または' xpath'で要素を正しくローカライズできません。 – nutship

関連する問題