我正在開發一個用一些自定義命令擴展Selenium 2的庫。該庫應該可以從Selenium的Java和Python綁定以及Selenium IDE中使用。從我的research中,這三個目標綁定至少應覆蓋所有Selenium 2腳本的80%。Selenium WebDriver:我可以在多大程度上依賴JavaScript?
爲了實現我對Selenium IDE的自定義命令,我想我需要爲它編寫一個JavaScript插件。
我的問題是這樣的:如果我已經在JavaScript中實現了自定義命令,那麼將此實現重用到我的庫的Java和Python綁定是否安全?
我想通過WebDriver#executeScript
注入我的命令的JavaScript實現的方法。這是我所想的一個僞代碼實現。
在Java:
public void fooJava() {
executeScript("Inject code.js");
executeScript("fooJavaScript();");
}
在code.js
:
function fooJavaScript() {
// Implementation of command "foo" from Selenium IDE plugin.
}
所以,在Java執行我的自定義命令fooJava()
,我的圖書館code.js
將通過executeScript
被注入到瀏覽器中。這將包含foo
的執行JavaScript,例如fooJavaScript
。在接下來的executeScript
呼叫中,將調用此fooJavaScript
。
雖然這種方法會阻止我爲實現我的自定義命令三次(使用Java,Python,硒IDE),我有幾個擔心:
- 當我注入我
code.js
,我在危險破壞網站的全球狀態? - 我可以在多大程度上依賴於JavaScript?如果有警報對話框,它會工作嗎?在實踐中,使用Selenium的驅動有多少個而不是支持JavaScript?例如。
HtmlUnit
? - 這項工作是否適用於所有主流瀏覽器(IE,Chrome,Firefox,Safari的最新版本)?
您對此的真實體驗將不勝感激。
從我的「真實生活中的經驗」..我已經_rarely_需要測試時甚至使用JavaScript。在我看來,如果你需要觸發一些JavaScript事件,那麼這是糟糕的應用程序設計。通常只是糟糕的設計才能從UI中抽象出來。我的意思是,那就是你正在測試的,不是嗎? – sircapsalot