你有两个错误:
-
getElementsByTagName 而不是 findElementsByTag
- 你必须把它放在三重
""" """ 或者你必须把Javascript放在一行中。
在此之后它添加了jQuery,但它需要多几行才能使用$
首先:它需要一些时间来加载jQuery 所以它需要time.sleep()
第二:此代码不会自动创建$,它需要$ = window.jQuery;
from selenium import webdriver
import time
url = 'https://stackoverflow.com/questions/57941221/how-can-i-use-jquery-with-selenium-execute-script-method'
driver = webdriver.Firefox()
driver.get(url)
driver.execute_script("""var jquery_script = document.createElement('script');
jquery_script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(jquery_script);""")
time.sleep(0.5) # time to load jQuery library
driver.execute_script('$ = window.jQuery;')
driver.execute_script('$("h1").wrap("<i></i>")')
#driver.execute_script('$ = window.jQuery;$("h1").wrap("<i></i>")')
您也可以在第一个脚本中使用jquery_script.onload 来运行将创建$ 的代码
jquery_script.onload = function(){var $ = window.jQuery;};
但在使用 $ 之前仍然需要 time.sleep()。
我是从Load jQuery with Javascript and use jQuery那里得到的
from selenium import webdriver
import time
url = 'https://stackoverflow.com/questions/57941221/how-can-i-use-jquery-with-selenium-execute-script-method'
driver = webdriver.Firefox()
driver.get(url)
driver.execute_script("""var jquery_script = document.createElement('script');
jquery_script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
jquery_script.onload = function(){var $ = window.jQuery;};
document.getElementsByTagName('head')[0].appendChild(jquery_script);""")
time.sleep(0.5) # time to load jQuery library
driver.execute_script('$("h1").wrap("<i></i>")')
最终你可以在onload 中运行所有代码,然后你就不需要time.sleep()
jquery_script.onload = function(){var $ = window.jQuery; $("h1").wrap("<i></i>");};
完整代码
from selenium import webdriver
import time
url = 'https://stackoverflow.com/questions/57941221/how-can-i-use-jquery-with-selenium-execute-script-method'
driver = webdriver.Firefox()
driver.get(url)
driver.execute_script("""var jquery_script = document.createElement('script');
jquery_script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
// jquery_script.onload = function(){var $ = window.jQuery; $("h1").wrap("<i></i>");};
jquery_script.onload = function(){
var $ = window.jQuery;
$("h1").wrap("<i></i>");
};
document.getElementsByTagName('head')[0].appendChild(jquery_script);""")