Ejemplo n.º 1
0
 async def jsonValue(self) -> Dict:
     """Get Jsonized value of this object."""
     objectId = self._remoteObject.get('objectId')
     if objectId:
         response = await self._client.send('Runtime.callFunctionOn', {
             'functionDeclaration': 'function() { return this; }',
             'objectId': objectId,
             'returnByValue': True,
             'awaitPromiss': True,
         })
         return helper.valueFromRemoteObject(response['result'])
     return helper.valueFromRemoteObject(self._remoteObject)
 async def jsonValue(self) -> Dict:
     """Get Jsonized value of this object."""
     objectId = self._remoteObject.get('objectId')
     if objectId:
         response = await self._client.send('Runtime.callFunctionOn', {
             'functionDeclaration': 'function() { return this; }',
             'objectId': objectId,
             'returnByValue': True,
             'awaitPromise': True,
         })
         return helper.valueFromRemoteObject(response['result'])
     return helper.valueFromRemoteObject(self._remoteObject)
Ejemplo n.º 3
0
    async def _onConsoleAPI(self, event: dict) -> None:
        _args = event.get('args', [])
        if (event.get('type') == 'debug' and _args
                and _args[0]['value'] == 'driver:page-binding'):
            obj = json.loads(_args[1]['value'])
            name = obj.get('name')
            seq = obj.get('seq')
            args = obj.get('args')
            result = await self._pageBindings[name](*args)

            deliverResult = '''
function deliverResult(name, seq, result) {
  window[name]['callbacks'].get(seq)(result)
  window[name]['callbacks'].delete(seq)
}
            '''
            expression = helper.evaluationString(deliverResult, name, seq,
                                                 result)
            await self._client.send('Runtime.evaluate',
                                    {'expression': expression})
            return

        if not self.listeners(Page.Events.Console):
            for arg in _args:
                await helper.releaseObject(self._client, arg)
            return

        _values = []
        for arg in _args:
            _values.append(
                asyncio.ensure_future(helper.valueFromRemoteObject(arg)))
        values = await asyncio.gather(*_values)
        self.emit(Page.Events.Console, *values)
Ejemplo n.º 4
0
 def toString(self) -> str:
     """Get string representation."""
     if self._remoteObject.get('objectId'):
         _type = (self._remoteObject.get('subtype')
                  or self._remoteObject.get('type'))
         return f'JSHandle@{_type}'
     return 'JSHandle:{}'.format(
         helper.valueFromRemoteObject(self._remoteObject))
Ejemplo n.º 5
0
 def toString(self) -> str:
     'Get string representation.'
     if self._remoteObject.get('objectId'):
         _type = (self._remoteObject.get('subtype')
                  or self._remoteObject.get('type'))
         return ''.join(['JSHandle@', '{}'.format(_type)])
     return 'JSHandle:{}'.format(
         helper.valueFromRemoteObject(self._remoteObject))
Ejemplo n.º 6
0
 def toString(self) -> str:
     """Get string representation."""
     if self._remoteObject.get('objectId'):
         _type = (self._remoteObject.get('subtype') or
                  self._remoteObject.get('type'))
         return f'JSHandle@{_type}'
     return 'JSHandle:{}'.format(
         helper.valueFromRemoteObject(self._remoteObject))
Ejemplo n.º 7
0
    def _onConsoleAPI(self, event: dict) -> None:
        _args = event.get('args', [])
        if (event.get('type') == 'debug' and _args
                and _args[0]['value'] == 'driver:page-binding'):
            obj = json.loads(_args[1]['value'])
            name = obj.get('name')
            seq = obj.get('seq')
            args = obj.get('args')
            result = self._pageBindings[name](*args)

            deliverResult = '''
function deliverResult(name, seq, result) {
  window[name]['callbacks'].get(seq)(result);
  window[name]['callbacks'].delete(seq);
}
            '''
            expression = helper.evaluationString(deliverResult, name, seq,
                                                 result)
            asyncio.ensure_future(
                self._client.send(
                    'Runtime.evaluate', {
                        'expression': expression,
                        'contextId': event['executionContextId'],
                    }))
            return

        if not self.listeners(Page.Events.Console):
            for arg in _args:
                asyncio.ensure_future(helper.releaseObject(self._client, arg))
            return

        _id = event['executionContextId']
        values = []
        for arg in _args:
            values.append(self._frameManager.createJSHandle(_id, arg))

        textTokens = []
        for arg, value in zip(_args, values):
            if arg.get('objectId'):
                textTokens.append(value.toString())
            else:
                textTokens.append(str(helper.valueFromRemoteObject(arg)))

        message = ConsoleMessage(event['type'], ' '.join(textTokens), values)
        self.emit(Page.Events.Console, message)
Ejemplo n.º 8
0
    def _onConsoleAPI(self, event: dict) -> None:
        _args = event.get('args', [])
        if (event.get('type') == 'debug' and _args and
                _args[0]['value'] == 'driver:page-binding'):
            obj = json.loads(_args[1]['value'])
            name = obj.get('name')
            seq = obj.get('seq')
            args = obj.get('args')
            result = self._pageBindings[name](*args)

            deliverResult = '''
function deliverResult(name, seq, result) {
  window[name]['callbacks'].get(seq)(result);
  window[name]['callbacks'].delete(seq);
}
            '''
            expression = helper.evaluationString(
                deliverResult, name, seq, result)
            asyncio.ensure_future(self._client.send('Runtime.evaluate', {
                'expression': expression,
                'contextId': event['executionContextId'],
            }))
            return

        if not self.listeners(Page.Events.Console):
            for arg in _args:
                asyncio.ensure_future(helper.releaseObject(self._client, arg))
            return

        _id = event['executionContextId']
        values = []
        for arg in _args:
            values.append(self._frameManager.createJSHandle(_id, arg))

        textTokens = []
        for arg, value in zip(_args, values):
            if arg.get('objectId'):
                textTokens.append(value.toString())
            else:
                textTokens.append(str(helper.valueFromRemoteObject(arg)))

        message = ConsoleMessage(event['type'], ' '.join(textTokens), values)
        self.emit(Page.Events.Console, message)