首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调用作为ElementHandle返回的元素的函数?

如何调用作为ElementHandle返回的元素的函数?
EN

Stack Overflow用户
提问于 2018-02-23 08:49:27
回答 1查看 90关注 0票数 1

我可以对属性进行更改,并通过控制台触发此页面上元素的重新呈现

通过this link打开JBrowse演示站点,然后继续阅读...

在控制台中,我可以运行以下命令来更新1个元素(实际上我会全部更新):

代码语言:javascript
复制
document.querySelectorAll('.track_jbrowse_view_track_alignments2')[0].track.displayMode = 'compact'
document.querySelectorAll('.track_jbrowse_view_track_alignments2')[0].track.layout = null
document.querySelectorAll('.track_jbrowse_view_track_alignments2')[0].track.redraw()

我尝试在木偶人代码中使用以下命令执行此操作:

代码语言:javascript
复制
const tracks = await page.$$('.track_jbrowse_view_track_alignments2');
for (let t of tracks) {
  await page.evaluate(t => {
    t.displayMode = 'compact';
    t.layout = null;
    t.redraw();
  }, t);
}

现有的功能脚本位于this link下,上面的代码片段将紧跟在突出显示的行之后插入。

任何指导都会很好,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-23 18:09:49

当JS代码完全就绪时,您应该等待它。这取决于你如何检测它,我只是使用虚拟的await page.waitFor(10000);。接下来,您应该在t.track对象上调用操作,而不是在t上。

以下是工作示例:

代码语言:javascript
复制
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto(
    'http://jbrowse.org/code/JBrowse-1.12.4/?loc=ctgA%3A16801..23754&tracks=volvox-sorted_bam&data=sample_data%2Fjson%2Fvolvox&nav=0&tracklist=0&fullviewlink=0&highlight='
  );

  await page.waitFor(10000);

  const tracks = await page.$$('.track_jbrowse_view_track_alignments2');
  for (let t of tracks) {
    await page.evaluate(t => {
      t.track.displayMode = 'compact';
      t.track.layout = null;
      t.track.redraw();
    }, t);
  }
  await page.screenshot({ path: 'image.png' });
  await browser.close();
})();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48939542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档