Estou usando o SeleniumBase no modo CDP.
Estou tendo dificuldade para descobrir se isso é um problema do Python ou do SeleniumBase.
O exemplo simples abaixo mostra meu problema:
from seleniumbase import SB
with SB(uc=True, locale_code="en", headless=True) as sb:
link = "https://news.ycombinator.com"
print(f"\nOpening {link}")
sb.wait_for_ready_state_complete(timeout=120)
sb.activate_cdp_mode(link)
script = f"""
function getSomeValue() {{
return '42';
}}
return getSomeValue();
"""
# data = sb.execute_script(script)
data = sb.cdp.evaluate(script)
print(data)
print("Finished!")
Isso gera o erro:
seleniumbase.undetected.cdp_driver.connection.ProtocolException:
exceptionId: 1
text: Uncaught
lineNumber: 5
columnNumber: 4
scriptId: 6
exception:
type: object
subtype: error
className: SyntaxError
description: SyntaxError: Illegal return statement
objectId: 3089353218542582072.1.2
Observe acima que tentei ambos sb.execute_script(script)
e sb.cdp.evaluate(script)
e ambos dão o mesmo problema.
Como posso executar esses scripts?
No modo CDP, não inclua o final
return
ao avaliar o JS.Sua parte do script deve ficar assim:
(Em vez de usar
"return getSomeValue();"
, que quebraevaluate(expression)
.)