2017-07-27 25 views
0

状況は、ウェブサイトが開かれたときにxmlhttprequestを送信するために "runScript"を使用し、responseText特定のtextcontentが存在するかどうか確認し、そうであれば、その要素をクリックしたいと思う。Selenium IDE - TypeError:document.getElementById(..)is null

私はあなたにウェブサイトのソースを表示することは許されていませんが、まだ間違いを見つけることができます(多分)。

マイスクリプト:

javascript{ 
var req = new XMLHttpRequest(); 
req.addEventListener("load", function(event) { 
if(req.status >= 200 && req.status < 300) 
{ 
    var parser = new DOMParser(); 
    var xmlDoc = parser.parseFromString(req.responseText, "text/html"); 
    if(document.getElementById("application_widgets__0_selectedUserLanguage_label").childNodes[0].textContent=="English") 
    { 
    document.getElementById("application_widgets__0_selectedUserLanguage_label").parentNode.click() 
    } 
} 
}); 
req.open("GET", ".............................."); 
req.send(); 
} 

私はすでにセレンIDEにそれを置く前に、放火犯のコンソールでそれをテストしてみたし、それが完璧に動作します。しかし、セレンIDEでそれを実行しているとき、私はいつも同じ例外を取得:

enter image description here

を私の質問は:なぜそれが放火犯ではなく、セレンIDEで動作しませんし、私が間違って何をしましたか?

  • には事前に答えを

おかげで何のiframeにありません! :)

+1

[Firebugは廃止されました](https://hacks.mozilla.org/2016/12/firebug-lives-on-in-firefox-devtools/)、[Firefox 57のリリース後はもう動作しません](https://blog.mozilla.org/addons/2016/11/23/add-ons-in-2017/)。私は後者がSelenium IDEにも当てはまると仮定します。 –

答えて

0

これは、document.getElementById()を呼び出すと、ページがまだ完全に読み込まれていないことを示しています。あなたはコードをwindow.addEventListener("load", function() { ... });にラップして動作させる必要があります。