A continuación, la función de python (v. 3.9.7) inyecta estilos CSS, que se cargan desde un archivo CSS estándar, en un objeto de controlador de selenio. Mientras que en macOS (11.5.2, homebrew) los estilos se aplican correctamente, en Linux (Ubuntu 20.04) los estilos no se aplicaron y aparece este mensaje: javascript error: Invalid or unexpected token
Entonces, ¿qué parte de la cadena está causando el problema y cómo debo preprocesar la cadena antes de enviarla?
def injectCSS(driver, file): css = Path(file).read_text() css = css.replace('\n', '') execute = rf''' var style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = '{css}'; document.head.appendChild(style); ''' try: driver.execute_script(execute) time.sleep(1) print('CSS injection done') except Exception as e: print(str(e)) ACTUALIZACIÓN: Reduje la cadena problemática: no es la cadena en la variable de Python, está ubicada dentro del archivo CSS cargado y es la línea que contiene el atributo src en una regla @font-face :
@font-face { font-family: "myfont"; src: url(http://my.font.com/font.woff2) format('woff2'); } ACTUALIZACIÓN 2: Bueno, gracias a @cruisepandey descubrí el marcado problemático en el CSS: son las comillas simples dentro del archivo CSS, por ejemplo font-family: 'serif'; . Reemplazarlos con comillas dobles soluciona el problema. ¿Por qué se permiten las comillas simples en la variable, pero no en el propio archivo CSS? Además: ¿por qué ocurre el problema en Linux y no en macOS?