Webdriver executescript і executeasyncscript, електрична вежа

Webdriver executescript і executeasyncscript, електрична вежа

Давайте розберемося, в чому сакральний сенс і основна відмінність цих методів.

executeScript

  • Переданий в даний метод джава скрипт буде виконаний в контексті обраного фрейму або вікна.
  • Буде виконаний як тіло анонімної функції.
  • В даному скрипті можна використовувати об'єкт document як посилання на поточний документ. Це означає, що ви можете виконувати джава скрипт, що містить, наприклад, ось такий рядок: getElementById ( «id»).
  • Локальні змінні після виконання скрипта стануть недоступними, хоча глобальні збережуться. Даний пункт дозволяє змінювати загальні змінні на сторінці.
  • Якщо сценарій має повернені значення, то перетворення в об'єкти Java відбувається наступним чином:
  1. Html-елемент трансформується в WebElement
  2. Decimal - в Double
  3. Non-decimal number - в Long
  4. Логічне значення - в Boolean
  5. Для інших випадків буде повернений String
  6. Масив буде перетворений в лист об'єктів, які трансформуються згідно з правилами, перерахованим вище. ВАЖЛИВО! Списки можуть бути вкладеними! Тобто якщо з JS буде переданий двовимірний масив, то він перетвориться в список списків.

Зверніть увагу. ExecuteScript повертатися не примітиви, а об'єкти! Це необхідно враховувати при подальшій роботі.

  • Якщо ваш скрипт нічого не повертає, то метод поверне null.
  • Передані в скрипт значення можуть бути числом, логічним значенням, рядком, WebElement'ом або списком. Використовувати їх в самому JS можна як елементи масиву arguments. Тобто якщо в метод executeScript передати, скажімо, WebElement. то клікнути по ньому можна буде наступним JS кодом: arguments [0] .click ();