Protractor browser.executeScript выдает «SyntaxError: missing) после списка аргументов» Исключение - PullRequest
0 голосов
/ 30 ноября 2018

Справочная информация

Я не могу щелкнуть определенные элементы на веб-сайте дизайна угловых материалов 2, который я в настоящее время автоматизирую.В результате я должен реализовать обходной путь использования JavaScriptExecutor, предоставленный в API-интерфейсе Protractor.Однако у меня возникают проблемы, когда я хочу запросить дом и щелкнуть элемент, используя Javascript.

Что не работает

  hardClickElement(by.css("input[placeholder='Search Accounts']"));

  function hardClickElement(by) {
    var locator = by.toString();
    if (locator.includes("css")) {
      console.log(`document.querySelector('${by.value}').click()`);
      browser.executeScript(`document.querySelector('${by.value}').click()`);
    }
  }

Чтоработает

hardClickElement(by.css(".mat-menu-content button"));

  function hardClickElement(by) {
    var locator = by.toString();
    if (locator.includes("css")) {
      console.log(`document.querySelector('${by.value}').click()`);
      browser.executeScript(`document.querySelector('${by.value}').click()`);
    }
  }

Итак ...

Поэтому мой вопрос: почему я получаю исключение

Не удалось: SyntaxError: отсутствует) после списка аргументов

при выполнении первого блока кода?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Это решит проблему:

hardClickElement(by.css('input[placeholder="Search Accounts"]'));

используйте двойные кавычки внутри одинарных кавычек

0 голосов
/ 30 ноября 2018

У вас есть строка шаблона:

`document.querySelector('${by.value}').click()`

Посмотрите на результат с console.log, прежде чем передать его executeScript.

У вас есть ' символов, разделяющих строку, являющуюся значением атрибута.

Входное значение, которое вы ему даете:

input[placeholder='Search Accounts']

… также содержит ' символов.Внутри строки, ограниченной ', они должны будут экранироваться.

...