Estou tentando realizar uma ação através do comando exec()
:
import asyncio from pyppeteer import launch async def main(a): #função que executará o comando exec(a) c="""browser = await launch() #inicializa navegador page = await browser.newPage() await page.goto('https://translate.google.com.br/?hl=pt-BR', timeout= 0) #timeout = 0 serve para impossibilitar erro por timeout dimensions = await page.evaluate('''() => { return { "width": document.documentElement.clientWidth, "height": document.documentElement.clientHeight } }''') #define as dimensões do navegador await page.setViewport(dimensions) await page.click('.tlid-open-source-language-list', button='left') await page.screenshot({'path': r'C:\Users\Windows 7\Desktop\yes.png'}) await browser.close() #fecha navegador """ asyncio.get_event_loop().run_until_complete(main(c)) #executa a função main() input('fim')
O interpretador indica um erro como invalid syntax
na linha browser = await launch()
, e esse código funciona perfeitamente quando executado diretamente, então há algo de errado quando ele é inserido em uma string e depois é exec().
Por sinal, o seguinte código funciona muito bem:
def x(y): exec(y) x('''print("oi") print('tchau')''')
Portanto o problema não é o fato de uma multi-line string ser exec(). Como tudo que o interpretador indica é Syntax Error: invalid syntax
, não sei como fazer o código funcionar.