作爲公司產品的一部分,用戶必須向瀏覽器添加書籤(書籤按鈕執行JavaScript代碼,而不是打開URL)。書籤如下:需要在Selenium IDE中添加cutom用戶擴展
javascript: (function() {
var d = document;
var script = d.createElement('scr'+'ipt');
script.src = 'https://<Company_URL>/Bookmarklet/ScriptContent?scriptFile=bm-script.js&rnd=' + Math.floor(Math.random() * 99999);
if (typeof script.onload === 'object') {
script.onload = function() {
doGeneralScript();
};
}
else {
script.onreadystatechange = function() {
if (this.readyState == 'complete' || this.readyState == 'loaded') {
doGeneralScript();
}
};
}
d.getElementsByTagName('head')[0].appendChild(script);
}());
代碼基本上打開與它的一些控制和用於用戶的下一個步驟是點擊控制中的一個的幀彈出。 同時,硒IDE是無法對位於公共區域外的按鈕點擊,所以有執行與硒IDE的書籤關聯的腳本的方法有兩種:
- 創建一個班輪腳本並做出「公開」聲明。它適用於Firefox瀏覽器版本11.0的 ,但在Firefox 23.0上導致非致命的 故障。當在Firefox 23.0上時,Selenium腳本 會暫停並等待窗口出現,忽略彈出框 。最終腳本在拋出錯誤後恢復。
- 編寫自定義用戶擴展,將根據要求執行腳本
我嘗試以下三個擴展添加到硒的芯擴展(用戶extensions.js)
Selenium.prototype.doMbProduction = function()
{
var d = document;
var script = d.createElement('scr' + 'ipt');
script.src = 'https://<Company_URL>/Bookmarklet/ScriptContent?scriptFile=bm-script.js&rnd=' + Math.floor(Math.random() * 99999);
if (typeof script.onload === 'object') {
script.onload = this.doRunGeneralScript();
} else {
script.onreadystatechange = this.doPerformLoad();
}
d.getElementByTagName('head')[0].appendChild(script);
}
Selenium.prototype.doRunGeneralScript = function(){
script.doGeneralScript();
}
Selenium.prototype.doPerformLoad = function()
{
if (this.readyState == 'complete' || this.readyState == 'loaded') {
this.doRunGeneralScript();
}
}
但是,將無法工作。當執行命令mbProduction,腳本引發致命錯誤
[error] Unexpected Exception: ReferenceError: script is not defined. fileName -> chrome://selenium-ide/content/tools.js -> file:///C:/Users/3pf/Downloads/sideflow1.js?1376849717650, lineNumber -> 124
在我的對自定義用戶的擴展線124 script.doGeneralScript();
有人能幫我找出我做錯了嗎?任何有用的建議,不勝感激。