Estoy intentando obtener un selector en esta clase action-button usando Selenium en Python, pero usando un Javascript Document QuerySelector. Eso significa ejecutar algún código js a través de WebDriver, que se parece a esto:
printBtnlast = driver.execute_script( "return document.querySelector('print-preview-app')...('controls').querySelector({WHAT_TO_DO_HERE?})" )(abreviado con '...' para mostrar la idea principal)
Hasta ahora he probado la consulta: 'cr-button[class='action-button']' , que sorprendentemente da un Message: javascript error: missing ) after argument list .
¿Qué puedo colocar en {WHAT_TO_DO_HERE?} para acceder al action-button en la imagen de abajo?
para esto
printBtnlast = driver.execute_script( "return document.querySelector('print-preview-app')...('controls').querySelector({WHAT_TO_DO_HERE?})" )Puedes probar esto:
printBtnlast = driver.execute_script("return document.querySelector('div.controls > cr-button.action-button')")o
printBtnlast = driver.execute_script("return document.querySelector('cr-button.action-button')")La sintaxis del query Selector es un poco diferente a la sintaxis de XPath . Puede utilizar los CSS Selectors para localizar un elemento. Una forma de encontrar el botón:
querySelector("cr-button.action-button")No tengo acceso a la página porque no la proporcionaste, pero puede darse el caso de que haya más de un elemento con la ruta dada. Entonces otra solución podría ser:
querySelector("div.controls > cr-button.action-button")La consulta que intentó puede dar un error debido a las comillas. Puedes probar esto:
'cr-button[class="action-button"]'Esto debería funcionar:
printBtnlast = driver.execute_script("return document.querySelector('.controls > .action-button')")