сбой js.executeScript с неожиданной ошибкой идентификатора

#javascript #java #selenium #selenium-webdriver

#javascript #java #селен #selenium-webdriver

Вопрос:

https://www.companyfolders.com/proofs

Я запускаю скрипт в консоли браузера на странице выше:

 let img = document.querySelector('.subscribe'),
style = img.currentStyle || window.getComputedStyle(img, false),
bi = style.backgroundImage.slice(4, -1).replace(/"/g, "");
  

затем введите ‘bi’ в консоли и нажмите enter.
Результатом будет мой ожидаемый URL:
«https://www.companyfolders.com/images/skin/bgr_header.png «

но когда я пытаюсь сделать это на Java: я перехожу на эту страницу, а затем пытаюсь выполнить:

 JavascriptExecutor js = (JavascriptExecutor) driver;
String a = String.valueOf(js.executeScript("return let img = document.querySelector('.subscribe'), style = img.currentStyle || window.getComputedStyle(img, false), bi = style.backgroundImage.slice(4, -1).replace(/"/g, "");"));
System.out.println(a)
  

Я вижу org.openqa.selenium.JavascriptException: ошибка javascript: неожиданный идентификатор

если я пытаюсь поместить оператор ‘return’ перед переменной ‘bi’, то я вижу ошибку об операторе return в JS.

Не могли бы вы объяснить, как реализовать этот скрипт, запустить и вернуть результат выполнения (URL-адрес строки) из Java Selenium?

Комментарии:

1. return let img = недопустимый javascript

2. понял. Но если я не буду использовать оператор return, я сохраню ‘null’ в своей строке a. как я могу это исправить?

3. должен ли sit быть одним оператором? если нет, let img = document.querySelector('.subscribe'), style = img.currentStyle || window.getComputedStyle(img, false), bi = style.backgroundImage.slice(4, -1).replace(/"/g, "");"); return bi

4. если это может быть только один оператор… return (document.querySelector('.subscribe').currentStyle || window.getComputedStyle(document.querySelector('.subscribe'), false)).backgroundImage.slice(4, -1).replace(/"/g, "");")

Ответ №1:

если это может быть только один оператор…

 return (document.querySelector('.subscribe').currentStyle || window.getComputedStyle(document.querySelector('.subscribe'), false)).backgroundImage.slice(4, -1).replace(/"/g, "");")
  

это работает нормально! Спасибо Jaromanda X