Soy bastante nuevo en el selenium y estoy tratando de averiguar cómo simular un solo clic
esto es lo que veo en el código fuente cuando inspecciono la fuente html
Lo intenté :
driver.find_element_by_css_selector("a[onlick*=document.getElementById('pN') .selectedIndex]").click()
pero recibo una InvalidSelectorException
¿alguna idea?
¡Gracias!
Puedes usar
from selenium import webdriver browser = webdriver.Chrome(somepath) # You should know what this does. browser.execute_script("document.getElementById('pN').selectedIndex = 0;document.getElementById('optionList').submit();return false")
Lo que significa que puedes ejecutar el código Javascript simplemente usando .execute_script, Awesome, ¿verdad?
Una InvalidSelectorException
no InvalidSelectorException
es una expectativa InvalidSelectorException
cuando no hay elemento o por experiencia, podría haber un iframe y tendrás que usar .switch_to.frame
para poder interactuar con él. Además, me gusta usar XPath (el más confiable siempre), toma un poco de tiempo acostumbrarme, pero con una o dos horas de práctica puedes obtenerlo.
JeffC tiene un buen punto, la estructura del HTML, JS siempre puede cambiar. Puede usar find_element_by_xpath(xpath).click()
pero también hay formas más dinámicas de predecir si la estructura va a cambiar, usando algo como find_element_by_name
u otro que esté disponible :
find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag_name find_element_by_class_name find_element_by_css_selector
¿Buscaste la excepción en Google? Significa que su selector no es válido. Los selectores de CSS como el que está intentando usar están en la tag[attribute='value']
formulario tag[attribute='value']
. No tiene el valor entre comillas … que no será posible en este caso específico porque su valor ya contiene comillas simples.
Debido a que la etiqueta A encierra la etiqueta IMG, puede hacer clic en la etiqueta IMG y obtener el mismo efecto. Un selector de CSS como el de abajo debería funcionar.
img[src='images/ListingOptionSearch.jpg']
Hay otros selectores que probablemente funcionen, pero con un enlace a la página, etc. Me gustaría saber si serían únicos.