In iOS Safari, executeScript
fails to serialize objects containing WebElements, while the same code works in Firefox, chrome and even IE.
I’ve tried running:
<code>const elements = await driver.$$('.my-class-name');
await driver.execute(function(args) {
return args.elements[0].tagName;
}, { elements });
</code>
<code>const elements = await driver.$$('.my-class-name');
await driver.execute(function(args) {
return args.elements[0].tagName;
}, { elements });
</code>
const elements = await driver.$$('.my-class-name');
await driver.execute(function(args) {
return args.elements[0].tagName;
}, { elements });
On Chrome, it returns "DIV"
, but on Safari, it returns null
.
When I tried:
<code>const elements = await driver.$$('.my-class-name');
await driver.execute(function(args) {
return args[0].tagName;
}, elements);
</code>
<code>const elements = await driver.$$('.my-class-name');
await driver.execute(function(args) {
return args[0].tagName;
}, elements);
</code>
const elements = await driver.$$('.my-class-name');
await driver.execute(function(args) {
return args[0].tagName;
}, elements);
it worked fine on both.
when debugging on Safari, each element was a large object with sessionId
and more webdriver-related info.
Does anyone know what might be causing this? Is it a bug in Safari or WebDriver? What’s the expected behavior?