python+selenium對網頁執行js指令碼報錯“$ is not defined”
阿新 • • 發佈:2019-02-07
背景
在python裡用selenium模擬瀏覽器的時候需要傳送一個POST請求,我用的是webdriver的execute_script方法,對頁面執行下面的js程式碼來獲取資料
$.post(........)
然後執行的時候報錯 “$ is not defined”
原因
對頁面執行$的js程式碼的前提是該網頁已經載入過jquery, 現在的狀態是頁面沒有載入jquery, 但是我卻對頁面執行jquery裡的$, 所以就報這個錯了。
解決辦法
法一
用javascrapy代替要執行的js裡的jquery語句。
法二
給頁面載入jquery,即在執行js裡的jquery語句之前, 先執行下面的js語句
var bod = document.getElementByTagName('body')
var script = document.createElement("script")
script.setAttribute("src", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.0.min.js") // 後面的連結可以根據需要修改
bod.appendChild(script)
執行完後,要等它載入一小會兒,然後就可以愉快地對頁面使用jquery語句了,