Estoy intentando extraer el texto usando el selector CSS. como las variables son de naturaleza dinámica, se actualizan continuamente.

#profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US 

this is a CSS selector

driver.find_element_by_css_selector('#profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US').text

x_path = //*[@id="profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US"]
# here i tried to apply the regex
driver.find_element_by_xpath("//*[ends-with(@id,'EDUCATION-en-US')]") 

Pero recibo un error como 'InvalidSelectorException'.
¿Hay alguna manera de obtener los datos sin error?

'ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8' esta ruta se actualizará continuamente. '#profileCard', 'EDUCATION-en-US' no habrá cambios en esto

Cualquier ayuda o pista para resolver el problema sería muy útil. Gracias por adelantado

1
Nikhil 10 ene. 2022 a las 15:01

2 respuestas

La mejor respuesta

Esto debería hacer lo que estás buscando:

driver.find_element_by_css_selector('[id^="profileCard-"][id$="-EDUCATION-en-US"]').text

El ^ denota con qué debería comenzar el id.

El $ denota con qué debería terminar el id.

2
Prophet 10 ene. 2022 a las 15:05

Para el valor de los atributos id como:

#profileCard-ACoAABI4A30BKLei-DtaS6B6vQo-3ejw-nzI1W8-EDUCATION-en-US

xpath no es compatible con ends-with(). En su lugar, puede utilizar cualquiera de las siguientes opciones:

  • Usando xpath :

    driver.find_element(By.XPATH, "//*[starts-with(@id, 'profileCard') and contains(@id, 'EDUCATION-en-US')]").text
    
  • Usando css_selector :

    driver.find_element(By.CSS_SELECTOR, "[id^='profileCard'][id$='EDUCATION-en-US']").text
    
0
undetected Selenium 10 ene. 2022 a las 15:19
1
Gracias por su tiempo
 – 
Nikhil
10 ene. 2022 a las 15:22