Веб-драйвер Selenium, использующий PhantomJS, не получает команды/клики для полного выполнения

У меня возникли проблемы при использовании selenium webdriver с PhantomJS.

У меня складывается впечатление, что разные действия не выполняются на самой странице. Если я попытаюсь запустить что-то, что изменяет элемент на странице, и тест будет выполнен полностью без каких-либо ошибок, а затем открою страницу в обычном браузере, отредактированный элемент, похоже, не изменится.


person ChristofferJohansson    schedule 15.10.2013    source источник


Ответы (1)


Убедитесь, что методы, которые должны запускаться действиями, действительно не выполняются. Вы можете сделать это следующим образом:

Во-первых, переопределите метод, чтобы «вставить» некоторый флаг, который будет запускаться действием (это код Scala, но вы должны понять идею):

val js: JavascriptExecutor = webDriver.asInstanceOf[JavascriptExecutor]
js.executeScript(myScript)

  lazy val myScript: String = {
    s"""
      window.openNewWindowFlag = false;

      SDK.openNewWindowFlag = function(url, width, height, onClose) {
        openNewWindowFlag = true;
      };
      """
  }

Обратите внимание, что мы добавляем флаг в глобальную область (окно). Затем запустите действие, которое должно вызвать какой-то метод (тот, который мы переопределим), и проверьте, изменился ли флаг:

val js: JavascriptExecutor = webDriver.asInstanceOf[JavascriptExecutor]
val isMethodTriggered = js.executeScript("return openNewWindowFlag").toString.toBoolean
person Johnny    schedule 11.03.2015