首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将javascript webdriver.Capabilities转换为字符串

将javascript webdriver.Capabilities转换为字符串
EN

Stack Overflow用户
提问于 2016-10-25 07:40:33
回答 1查看 241关注 0票数 1

使用类型记录中的量角器(selenium),我可以调用browser.driver.getCapabilities()来获取如下所示的对象:

代码语言:javascript
复制
Capabilities {
  'acceptSslCerts' => true,
  'applicationCacheEnabled' => false,
  'browserConnectionEnabled' => false,
  'browserName' => 'chrome',
  'chrome' => { chromedriverVersion: '2.24.417431 (9aea000394714d2fbb20850021f6204f2256b9cf)',
  userDataDir: 'C:\\Users\\***\\AppData\\Local\\Temp\\scoped_dir12788_29679' },
  'cssSelectorsEnabled' => true,
  'databaseEnabled' => false,
  'handlesAlerts' => true,
  'hasTouchScreen' => false,
  'javascriptEnabled' => true,
  'locationContextEnabled' => true,
  'mobileEmulationEnabled' => false,
  'nativeEvents' => true,
  'networkConnectionEnabled' => false,
  'pageLoadStrategy' => 'normal',
  'platform' => 'Windows NT',
  'rotatable' => false,
  'takesHeapSnapshot' => true,
  'takesScreenshot' => true,
  'version' => '54.0.2840.71',
  'webStorageEnabled' => true }

这就是通过console.log传送时的样子。,但是如何在代码中获得这个字符串表示呢?

caps.toJSON()什么也不返回。JSON.stringify(caps),也没什么。for(let foo in caps)也不会产生任何结果。这个物体看起来像某种地图。我想把这个对象保存到一个文件中,console.log做了什么特别的魔术,我怎么做呢?

如果有人知道这是什么类型的对象,那也是有帮助的。我认为它可能是一个ES6映射,但与将ES6映射转换为JSON中的示例不同,它不是迭代器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-25 10:42:23

方法getCapabilities返回一个ES6 MAP对象。似乎不可能直接序列化这个对象。因此,您最好的机会可能是序列化条目:

代码语言:javascript
复制
browser.driver.getCapabilities().then(caps => {
  var entries = Array.from(caps.entries());
  console.log(JSON.stringify(entries));
});

或者将条目转换为Object,然后序列化它:

代码语言:javascript
复制
browser.driver.getCapabilities().then(caps => {
  var obj = Array.from(caps.entries()).reduce((o, v) => (o[v[0]] = v[1], o), {});
  console.log(JSON.stringify(obj));
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40234096

复制
相关文章

相似问题

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