【问题标题】:Chrome DevTools Protocol: control new tabsChrome DevTools 协议:控制新标签页
【发布时间】:2018-01-20 02:19:00
【问题描述】:

需要完成:我需要模拟跨网站链的用户交互(旅程)。

问题:您对如何以编程方式控制因模拟点击而打开的标签页有什么技巧吗?

我的经验: 我正在使用 chrome-remote-interface npm 包。 我可以使用自定义 ChromeController 类来模拟点击,该类初始化 chrome-remote-interface 和这些方法:

async simulateClick(selector) {
    return await this.evaluate(function (selector) {
        document.querySelector(selector).click()
    }, selector);
}
/**
 * Shamelessly stolen from simple-headless-browser
 */
async evaluate (fn, ...args) {

    const exp = args && args.length > 0 ? `(${String(fn)}).apply(null, ${JSON.stringify(args)})` : `(${String(fn)}).apply(null)`
    const result = await this.client.Runtime.evaluate({
        expression: exp,
        returnByValue: true
    })        

    return result
}

现在我想与最近打开的标签进行交互。我可以通过实验目标域(节点 cli 中的原型制作)获取新选项卡的 targetId:

var targets;
chromeController.client.Target.getTargets().then(t => targets = t);

结果:

{ targetInfos: 
 [ { targetId: '97556479-cdb6-415c-97a1-6efa4e00b281',
     type: 'page',
     title: 'xxx/preview/239402/',
     url: 'xxx/preview/239402/' },
   { targetId: 'bbfe11d5-8e4a-4879-9081-10bb7234209c',
     type: 'page',
     title: 'Document',
     url: 'xxx/preview/239402/teaser/0/' } ] }

我可以在标签之间切换:

chromeController.client.Target.activateTarget({targetId:'xxx'})

但是我无法与此进行任何交互,我找不到连接,如何将其加载到 Page 和 Runtime 对象中。

我在文档中进行了搜索,还尝试了谷歌搜索:'site:chromedevtools.github.io targetId' 这只会引导我到

> chromeController.client.Browser.getWindowForTarget({targetId: '97556479-cdb6-415c-97a1-6efa4e00b281'}).catch(e => console.log(e.message));
Promise { <pending> }
> 'Browser.getWindowForTarget' wasn't found

我也尝试过 Target.setDiscoverTargets({discover: true}) 并关闭原始标签。

感谢您的帮助!

【问题讨论】:

    标签: node.js google-chrome-devtools


    【解决方案1】:

    我还在 debian、google-chrome-unstable 版本 61 上收到“找不到 Browser.getWindowForTarget”

    【讨论】:

    • 我认为这个答案更适合作为评论,因为它无助于解决问题。即便如此,作为评论它也无助于解决问题。请不要发这类帖子
    猜你喜欢
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多