#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 =
недопустимый javascript2. понял. Но если я не буду использовать оператор 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