go - 为什么 promise 不能在Golang chromedp中工作

标签 go promise webdriver chromedp

我实际上试图在golang chromedp中执行此代码,但无法正常工作

const inlineJavascript = `
    var textarea = document.createElement('textarea');
    textarea.setAttribute('id', 'recaptcha-token-container');
    textarea.style.display = 'display:none;'
    document.body.appendChild(textarea);

    grecaptcha.execute('SITE_KEY', { action: 'login' }).then(function(token) {
        textarea.value = token;
        textarea.style.display = ''
    });
`

chromedp.EvaluateAsDevTools(inlineJavascript, &token),
chromedp.WaitVisible(`#recaptcha-token-container`),
chromedp.Value(`#recaptcha-token-container`, &token),

应用程序等待textarea,.then无法正常工作并显示textarea never

最佳答案

WaitVisible 等待直到您的元素可见。

textarea.style.display = 'display:none;'行中,CSS样式无效,因此被忽略,这意味着这是您的元素可见的地方。
该行应该是

textarea.style.display = 'none'

因此,WaitVisibledocument.body.appendChild(textarea);运行之后立即返回,这意味着之后的所有内容都不会影响token

当您更改错误的CSS时,它应该可以正常工作,因为该元素仅在promise运行后才可见

关于go - 为什么 promise 不能在Golang chromedp中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59537265/

相关文章:

Golang : pass boolean flag from function in file/sub-directory A, 在文件/子目录 B 中运行

mysql - 准备语句不释放内存

javascript - NodeJS : Functional Programming - No access to prototype in handover function

javascript - NodeJS 的递归 Promise 不会终止

linux - 找不到 webdriver.xpi - Python3,Linux Mint

java - 使用 Webdriver 的 Eclipse for Java 中的字符编码问题

java - 我可以同时在不同端口上运行selenium服务器吗?

variables - 为什么我可以在 for 循环中多次重新定义同一个变量,但不能在循环之外?

html - 如何在golang中使用html

javascript - 使用 js Promise 的复杂决策树