Не могу получить объект DOMRect в рамках теста Webdriver-io (js)
Мне нужно получить координаты элемента на веб-странице с помощью функции .getBoundingClientRect(). Когда я решал эту задачу год назад, то делал это так:
browser.executeScript('window.document.querySelector("div.myDiagramDiv canvas").getBoundingClientRect();', [])
Примечание: данную операцию я выполняю в рамках написания автоматизированного теста на Webdriver-io, поэтому объект window недоступен, и приходится пользоваться browser.executeScript.
Сейчас, спустя год, я вернулся к своей задаче, и код, приведенный выше, возвращает пустой объект.
Я пробовал продебажить этот код в рамках теста и в консоли браузера. Результат следующий:
Код теста Webdriver-io:
a = browser.executeScript('window.document.querySelector("div.myDiagramDiv canvas")', [])
console.log(a) # вывод: { 'element-6066-11e4-a52e-4f735466cecf': 'ELEMENT-40' }
b = browser.executeScript('window.document.querySelector("div.myDiagramDiv canvas").getBoundingClientRect();', [])
console.log(b) # вывод: {}
Дебаг в консоли браузера
a = window.document.querySelector("div.my_diagram_div canvas")
# вывод: <canvas tabindex="0" style="position: absolute; top:…t: 435px; cursor: auto;" width="1519" height="435">
b = a.getBoundingClientRect()
# вывод: DOMRect { x: 158.5, y: 132, width: 1519, height: 435, top: 132, right: 1677.5, bottom: 567, left: 158.5 }
Почему в рамках теста я не могу получить объект DOMRect, а в консоли браузера это получается?
Ответы (1 шт):
Вместо
elem.getBoundingClientRect()
нужно использовать
elem.getWindowRect()
.getWindowRect() есть в спецификации Webdriver-io, поэтому browser.executeScript() больше не нужен.
