2013-05-30 25 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

我敢打賭,你應該等待元素,直到它變得可見。

三個選項:

  • 呼叫time.sleep(n)
  • 使用WebDriverWait喜歡它的建議hereherehere

我會去的第二個選項。

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