Algunos sitios web responden a las instrucciones de javascript y otros no. El sitio web de Santander permite javascript en la primera página, pero una vez que intenta iniciar sesión, las cosas cambian. lo siguiente pasado desde python se imprimirá en la consola en la primera página pero no en la segunda página.
driver.execute_script('console.log(" lll kkk cheaky breeki ");')Todavía puedo abrir las herramientas de desarrollador y escribir
console.log(" lll kkk cheaky breeki ");y todavía funciona cuando lo hago manualmente, pero no cuando lo pasa Python.
mi guión completo está abajo
import time from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By import selenium.common.exceptions as s_ex driver = webdriver.Chrome("chromedriver.exe") driver.get("https://www.santander.co.uk/") login_xp = '/html/body/div[3]/header/div[1]/div/nav/div/div[1]/div/div/nav/ul/li[2]/a'; time.sleep(1) driver.execute_script('console.log(" i print fine ");') WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,login_xp))) log = driver.find_element_by_xpath(login_xp) log.click(); time.sleep(2) driver.execute_script('console.log(" lll kkk cheaky breeki ");') ## how can i get this to print, why doesnt it now?Probé tu ejemplo: parece que la línea log.click() hace que el navegador abra una nueva pestaña. Cuando eso sucede, su driver aún apunta a la pestaña original con la página de inicio.
Ejecutar driver.execute_script('console.log(" lll kkk cheaky breeki ");') en este punto ejecutará el script en la pestaña original, no en la nueva.
Si desea ejecutar un script en la página de inicio de sesión, le sugiero que vaya allí directamente usando, por ejemplo:
driver.get('https://retail.santander.co.uk/olb/app/logon/access/#/logon')El problema es que log.click() abre una nueva pestaña. Por lo tanto, debe decirle al controlador que cambie a esa nueva pestaña y ejecute todas las declaraciones en esa pestaña a partir de ahora. Encontrará que actualmente el controlador tampoco puede encontrar ningún elemento en la nueva pestaña, ya que todavía está mirando su pestaña anterior.
log.click() driver.switch_to.window(driver.window_handles[-1]) driver.execute_script('console.log(" lll kkk cheaky breeki ");')Tenga en cuenta que el cambio de pestaña es bastante rudimentario, simplemente va a la última pestaña.