$x method

Future<List<ElementHandle>> $x(
  1. String expression
)

The method evaluates the XPath expression relative to the elementHandle. If there are no such elements, the method will resolve to an empty array.

Implementation

Future<List<ElementHandle>> $x(String expression) async {
  var arrayHandle = await evaluateHandle(
      //language=js
      '''
function _(element, expression) {
const document = element.ownerDocument || element;
const iterator = document.evaluate(expression, element, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE);
const array = [];
let item;
while ((item = iterator.iterateNext()))
  array.push(item);
return array;
}
''', args: [expression]);
  var properties = await arrayHandle.properties;
  await arrayHandle.dispose();
  var result = <ElementHandle>[];
  for (var property in properties.values) {
    var elementHandle = property.asElement;
    if (elementHandle != null) result.add(elementHandle);
  }
  return result;
}