Intento encontrar un elemento por nombre de clase. Lamentablemente, el nombre de la clase que tengo que seleccionar contiene guiones bajos dobles con un error "no existe ese elemento".
div-element
para seleccionar:
<div class="result-list-entry__data">
...
</div>
Selección:
last_named_class = result.find_element_by_class_name('result-list-entry__data')
Resultado actual (error):
selenium.common.exceptions.NoSuchElementException: Mensaje: no existe ese elemento: No se puede encontrar el elemento: {"método": "selector css", "selector": ". result-list-entry__data"} (Información de sesión: chrome = 77.0. 3865.90)
¿Es posible escapar de los guiones bajos dobles?
5 respuestas
Puede utilizar el enfoque sugerido anteriormente con dos contiene:
last_named_class = result.find_element_by_xpath("//div[contains(@class, 'result-list') and contains(@class, 'data')]"
Puede intentar obtener la lista de todos los elementos con class = "result-list-entry__data" utilizando
Si tiene más de una clase en el DOM, repita la matriz elementResult en función de la posición
elementResult=[];
elementResult = driver.find_elements_by_class_name("result-list-entry__data");
Más
elementResult = driver.find_elements_by_class_name("result-list-entry__data");
En primer lugar, verifique si hay iframes. si el elemento está en iframe, deberá cambiar al marco antes de hacer algo con ese elemento.
Puede ubicar este elemento usando una coincidencia parcial de cadena en el atributo de clase, algo como esto,
last_named_class = result.find_element_by_xpath("//*[contains(@class,'result-list-entry')]")
Prueba debajo de las cosas,
- Aplicar la espera requerida (espera implícita o explícita)
driver.implicitly_wait(15)
wait = WebDriverWait(driver, 10)
wait.until(ec.visibility_of_element_located((By.XPATH, "//*[contains(@class,'result-list-entry')]")))
Compruebe si element es un elemento secundario del elemento iframe. si es así, cambie a iframe e intente hacer clic
Utilice xpath con contiene si el valor de la propiedad del elemento cambia con frecuencia
last_named_class = result.find_element_by_xpath("//*[contains(@class,'result-list-entry')]")
Tal vez podría usar una consulta contiene en su selector. Intenta algo como esto:
last_named_class = result.find_element_by_xpath("//div[contains(@class, 'result-list')]")
Espero que esto ayude un poco.
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.