Usando selenio, me gustaría tener un resultado de una acción de clic en un elemento en html (HTML4).
El dom en el html es así
<A HREF="javascript:open_login_page();"> <IMG NAME="login_button" SRC="hoge.jpg" alt="login"></A>Parece que mi secuencia de comandos de Python obtiene con éxito el elemento.
Usando el elemento obtenido a_element ,
a_element.get_attribute('href')devoluciones
javascript:open_login_page(); Sin embargo, a_element.click() genera un error.
¿Cómo puedo tener el resultado?
El resultado esperado es tener otra ventana emergente.
Básicamente, hay 4 formas de hacer clic en Selenium.
Usaré este xpath
//IMG[@NAME='login_button']//parent::APrueba de código 1:
time.sleep(5) driver.find_element_by_xpath("//IMG[@NAME='login_button']//parent::A").click()Prueba de código 2:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//IMG[@NAME='login_button']//parent::A"))).click()Prueba de código 3:
time.sleep(5) button = driver.find_element_by_xpath("//IMG[@NAME='login_button']//parent::A") driver.execute_script("arguments[0].click();", button)Prueba de código 4:
time.sleep(5) button = driver.find_element_by_xpath("//IMG[@NAME='login_button']//parent::A") ActionChains(driver).move_to_element(button).click().perform()Importaciones:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.action_chains import ActionChains PD: compruebe en las dev tools de desarrollo (Google Chrome) si tenemos una entrada única en HTML DOM o no.
Pasos para comprobar:
Press F12 in Chrome -> vaya a la sección de element -> haga CTRL + F -> luego pegue el xpath y vea si su element deseado se resalta con el nodo coincidente 1/1 .