title: What's the expected behavior of puppeteer's ElementHandle.getProperty()?
body: <p>Puppeteer 1.0.0-post. The <code>getProperty()</code> method seems somewhat magical. For example, if your page contains:</p>
  
  <pre><code>&lt;a href="/foo/bar.html"&gt;link&lt;/a&gt;
  </code></pre>
  
  <p>Then this will return not a <em>relative</em> but an <em>absolute</em> URL:</p>
  
  <pre><code>const propertyHandle = await elementHandle.getProperty('href');
  const href = await propertyHandle.jsonValue();
  // href is 'https://localhost:8080/foo/bar.html'
  </code></pre>
  
  <p>On the other hand, if you were to do the more roundabout:</p>
  
  <pre><code>const hrefHandle = await page.evaluateHandle(element =&gt; element.getAttribute('href'), elementHandle);
  const href = await hrefHandle.jsonValue();
  // href is '/foo/bar.html'
  </code></pre>
  
  <p>As far as I can tell, the puppeteer documentation doesn't mention this behavior of <code>getProperty()</code>?</p>
  
  <p>It gets uglier, for instance if you want to get the <code>style</code> attribute of an element. It looks like puppeteer's <code>getProperty()</code> actually tries to parse the style in some way, which parsing is buggy/incomplete. The only way to get the raw text is with the roundabout call to <code>evaluateHandle(...)</code>. </p>
  
  <p>Is this an intended feature and simply a documentation bug? Or is it just, outright, a puppeteer bug?</p>
  
  <p>Thanks.</p>