with una tutorial scraping scrapear pagina extraer examples espaƱol datos con como python selenium

python - una - web scraping tutorial



Nombres de clase de compuesto de selenio no permitidos (2)

Llego tarde a esta pregunta. Pero también encontré una solución al tratar las clases compuestas como una cadena, usando tag_name y get_attribute (''clase''), cuando no está familiarizado con Xpath. Necesita algunas líneas de código más, pero es sencillo y apto para principiantes como yo.

elements = driver.find_elements_by_tag_name(''Tag Name Here'') for element in elments: className = watchingTable.get_attribute(''class'') print(className) if className == ''Your Needed Classname'': #Do your things

Tengo el siguiente código que hace clic en un elemento para abrir una pantalla y copiar el texto en ella

el1 = driver.find_element_by_id("keyDev-A") el1.click() el2 = driver.find_element_by_class_name("content") print(el2.text)

Sin embargo, cuando intenté hacer que el selenium haga clic en el botón dentro de esa ventana emergente con

el3 = driver.find_element(By.CLASS_NAME, "action-btn cancel alert-display") el3.click()

Produce un mensaje de error: invalid selector: Compound class names not permitted

Este es el HTML en el que estoy tratando de hacer que selenium haga clic. El botón Close

<div class="nav"> <span class="action-btn confirm prompt-display">Confirm</span> <span class="action-btn cancel prompt-display">Cancel</span> <span class="action-btn cancel alert-display">Close</span> </div>

¿Cómo debo escribir el3 para hacer clic en el botón Cerrar?


El comentario de Leon lleva a la información correcta de que los nombres de clase compuestos ya no son compatibles. Lo que podría hacer en su lugar es intentar usar los selectores css. En su caso, la siguiente línea de código debería ayudarlo a obtener el elemento que desea:

el3 = driver.find_element_by_css_selector(".action-btn.cancel.alert-display")

Encuentra el elemento con las tres clases (action-btn, cancel y alert-display) en el atributo de clase. Tenga en cuenta que el orden de las clases no importa aquí y cualquiera de las clases puede aparecer en cualquier parte del atributo de clase. Mientras el elemento tenga las tres clases, será seleccionado. Si desea que se arregle el orden de las clases, puede usar el siguiente xpath:

el3 = driver.find_element_by_xpath("//*[@class=''action-btn cancel alert-display'']")