2015-02-23 10 views
3

我試圖將事件添加到一個按鈕:

str = "a#fCoverage" // my locator 
def str2 = "\$('" + str + "').addEventListener('click', function(){alert('text')});" // add event 
js.exec(str2) 

但我得到這個錯誤:

error: org.openqa.selenium.WebDriverException: unknown error: $ is not defined

誰能幫幫我好嗎?

+0

使用 「窗口。jQuery的」,而不是 「$」 ...... – 2015-02-23 10:47:36

+0

可以顯示例子? – nightmare 2015-02-23 10:58:16

回答

-1

addEventListener是在document的方法,而不是$(這是通常的jQuery的簡寫)。

因此將$更改爲document

+0

爲什麼字符串「$(location.reload())」在控制檯中工作,但在我運行測試時不工作? ('$(location.reload())') browser.driver.executeScript('$(location.reload())')' – nightmare 2015-02-23 13:45:15

+0

雖然 - 'location.reload'是一個JavaScript命令,與jQuery無關。你做得比它需要的複雜得多。 'location.reload()'是你所需要的。至於控制檯,是'''實際映射到jQuery?在控制檯中執行'$ === jQuery' =>是否返回'true'? – Arran 2015-02-23 15:13:40

+0

是的,$ === jQuery true – nightmare 2015-02-23 15:58:33

0

使用document.querySelector地質儲量$

你的代碼最終會

str = "a#fCoverage" // my locator 
def str2 = "document.querySelector('" + str + "').addEventListener('click', function(){alert('text')});" // add event 
js.exec(str2) 
相關問題