2014-05-09 79 views
0

我是selenium的新手,並且無法確定如何使用Python和Selenium Web驅動程序來自動執行以下語句。這是一個可點擊的文本元素「我的按鈕標籤」。來自Selenium Python的調用腳本

<a class="class_a" href="javascript:f_func(46)" id="func46" ondrag="window.event.returnValue=false" onmousedown="return false;">My Button Label </a> 

我已經試過這樣:

driver.execute_script("f_func()", 46) 

driver.execute_script("f_func(46)") 

selenium.common.exceptions.WebDriverException: Message: u'data[i] is undefined' ; 

指向一個var內心深處的js告終。

什麼是正確的方法來模擬點擊該元素並調用腳本,傳遞46作爲參數?

上編輯:我忘了補充的第一件事,我想

driver.find_element_by_xx().click() 

也失敗了。下面的ActionChain Api是唯一對我有用的東西。

+0

爲什麼要投票?對於被確定爲初學者/非專家的人來說,這是一個合理的問題。 –

回答

0

要調用腳本,你有沒有嘗試發送你的參數?

driver.execute_script("f_func(arguments[0])", 46) 

但是,第一次點擊有什麼問題?如果它不適合你,請嘗試使用ActionChains

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

# your code here 

# then 
ActionChains(driver).click(driver.find_element_by_id('func46')).perform() 
+0

因爲這是你的第一個問題,所以你知道它是否有效,請接受答案,http://meta.stackexchange.com/a/5235。否則,請在此處提供反饋(您的Selenium版本,瀏覽器信息,堆棧跟蹤等)以進行診斷。 –

+0

ActionChains是我正在尋找的構造,但是,我不明白在這個問題上的投票。我相信,勸阻初學者和答案會幫助其他人。 –

+0

非常感謝 - 如果沒有您的幫助,我永遠不會想到這件事。你怎麼知道要嘗試ActionChain而不是僅僅使用click()方法?使用ActionChains作爲單擊元素的默認方法是否安全/首選? –