Невозможно использовать setValue () в nightwatch. js - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь написать простой скрипт в nightwatch. js, который откроет Google и введет текст в поле поиска. Я сталкиваюсь с проблемой использования обоих методов setValue() для отправки текста в элемент.

Вот мой сценарий:

module.exports = {
  'Search bar displayed on Google Home Page'(driver) {

    driver
      .url('http://www.google.com')
      .assert.urlContains('google')
      .assert.title('Google')
      .waitForElementPresent('input[title="Search"]')
      .pause(5000)
      .setValue('input[title="Search"]', 'test123') // error happens here
      .end()
  },
}

При использовании setValue() я вижу следующее ошибка:

Ошибка при выполнении действия протокола .setElementValue (): TypeError [ERR_UNESCAPED_CHARACTERS]: Ошибка при попытке создать HTTP-запрос для объекта "/ wd / hub / session / ed0680ce58544facf2a4b193eccbc223 / element / [объект / value ": Путь запроса содержит неэкранированные символы в новом ClientRequest (_http_client. js: 115: 13) в Object.request (http. js: 42: 10) в HttpRequest.createHttpRequest в новом Promise () в Selenium2Protocol. sendProtocolAction

По какой-то причине .setValue() пытается отправить Object object в качестве идентификатора WebElement в URL-адресе запроса.

Сценарий успешно выполняет assert и .waitForElementPresent('input[title="Search"]'), поэтому я знаю, что элемент находится на странице. Я добавил pause(5000), чтобы у страницы было достаточно времени для загрузки, прежде чем пытаться отправить ключи. Я также попытался запустить .click() до .keys(), чтобы попытаться сфокусировать элемент.

Я считаю, что синтаксис правильный, но я все еще новичок в nightwatch, так что это также может быть проблемой.

У этого пользователя почти та же проблема, что и у меня, но нет ответа: Метод setValue в Nightwatch не работает

Я использую chromedriver версия 80.0.3987.16

Я использую nightwatch версию 1.3.4

Я установил chromedriver - npm, используя npm install chromedriver и установил путь к chromedriver.exe в моем файле nightwatch.json:

{
  "src_folders" : ["tests"],
  "output_folder" : "reports",
  "custom_commands_path" : "",
  "custom_assertions_path" : "",
  "page_objects_path" : "./page_objects",
  "globals_path" : "",

  "selenium" : {
    "start_process" : true,
    "server_path" : "./node_modules/selenium-standalone/.selenium/selenium-server/3.141.5-server.jar",
    "log_path" : "./reports",
    "host": "127.0.0.1",
    "port" : 4444,
    "cli_args" : {
      "webdriver.chrome.driver" : "./node_modules/chromedriver/lib/chromedriver/chromedriver.exe",
      "webdriver.gecko.driver" : "",
      "webdriver.edge.driver" : ""
    }
  },

  "test_settings" : {
    "default" : {
      "launch_url" : "http://localhost",
      "selenium_port"  : 4444,
      "selenium_host"  : "localhost",
      "silent": true,
      "screenshots" : {
        "enabled" : false,
        "path" : ""
      },
      "desiredCapabilities": {
        "browserName": "chrome",
        "marionette": true,
        "javascriptEnabled": true,
        "acceptSslCerts": true
      }
    },

    "chrome" : {
      "desiredCapabilities": {
        "browserName": "chrome"
      }
    }
  }
}

Может кто-нибудь помочь мне понять, в чем здесь проблема?

1 Ответ

0 голосов
/ 22 февраля 2020

Проблема была решена путем добавления "w3c": false в "chrome" в моем файле nightwatch.json.

Особая благодарность @Raju, чей файл nightwatch.conf.js в их образце репозитория имел такой пример.

Я изменил это:

  "test_settings" : {
    "default" : {
      "launch_url" : "http://localhost",
      "selenium_port"  : 4444,
      "selenium_host"  : "localhost",
      "silent": true,
      "screenshots" : {
        "enabled" : false,
        "path" : ""
      },
      "desiredCapabilities": {
        "browserName": "chrome",
        "marionette": true,
        "javascriptEnabled": true,
        "acceptSslCerts": true
      }
    }

На это:

  "test_settings" : {
    "default" : {
      "launch_url" : "http://localhost",
      "selenium_port"  : 4444,
      "selenium_host"  : "localhost",
      "silent": true,
      "screenshots" : {
        "enabled" : false,
        "path" : ""
      },
      "desiredCapabilities": {
        "browserName": "chrome",
        "marionette": true,
        "javascriptEnabled": true,
        "acceptSslCerts": true,
        "chromeOptions": {
            "w3c": false
        }
      }
    }

При добавлении поля chromeOptions плюс "w3c": false теперь все работает как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...