簡體   English   中英

將javascript webdriver.Capabilities轉換為字符串

[英]Turn javascript webdriver.Capabilities into string

在typescript中使用量角器(selenium)我可以調用browser.driver.getCapabilities()來獲得一個看起來像這樣的對象:

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之間的示例不同,它不是迭代器。

方法getCapabilities返回ES6 MAP對象。 似乎不可能直接序列化此對象。 因此,您最好的機會可能是將序列化:

browser.driver.getCapabilities().then(caps => {
  var entries = Array.from(caps.entries());
  console.log(JSON.stringify(entries));
});

或者將條目轉換為Object ,然后將其序列化:

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));
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM