1. 程式人生 > >python+selenium對網頁執行js指令碼報錯“$ is not defined”

python+selenium對網頁執行js指令碼報錯“$ is not defined”

背景

在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語句了,