How can I use jQuery with the selenium execute_script method, if the current page isn\'t already using jQuery?
For example:
from seleniu
You have two mistakes:
getElementsByTagName instead of findElementsByTag """ """ or you have to put Javascript in one line. After this it adds jQuery but it need few lines more to use $
First: it needs some time to load jQuery so it needs time.sleep()
Second: this code doesn't create automatically $ and it needs $ = 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("")')
#driver.execute_script('$ = window.jQuery;$("h1").wrap("")')
You can also use jquery_script.onload in first script to run code which will create $
jquery_script.onload = function(){var $ = window.jQuery;};
but it still need time.sleep() before you use $.
I took this from 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("")')
Eventually you can run all in onload and then you don't need time.sleep()
jquery_script.onload = function(){var $ = window.jQuery; $("h1").wrap("");};
Full code
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("");};
jquery_script.onload = function(){
var $ = window.jQuery;
$("h1").wrap("");
};
document.getElementsByTagName('head')[0].appendChild(jquery_script);""")