Мне нужно хранить и извлекать данные из хранилища сессий в моем проекте весенней загрузки. Я получил следующий класс для использования, но не уверен, как создать его сервис и создать необходимые bean-компоненты для его вызова.
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.springframework.stereotype.Service;
@Service
public class SessionStorage {
private JavascriptExecutor js;
public SessionStorage(WebDriver driver) {
this.js = (JavascriptExecutor) driver;
}
public void removeItemFromSessionStorage(String item) {
js.executeScript(String.format(
"window.sessionStorage.removeItem('%s');", item));
}
public boolean isItemPresentInSessionStorage(String item) {
if (js.executeScript(String.format(
"return window.sessionStorage.getItem('%s');", item)) == null)
return false;
else
return true;
}
public String getItemFromSessionStorage(String key) {
return (String) js.executeScript(String.format(
"return window.sessionStorage.getItem('%s');", key));
}
public String getKeyFromSessionStorage(int key) {
return (String) js.executeScript(String.format(
"return window.sessionStorage.key('%s');", key));
}
public Long getSessionStorageLength() {
return (Long) js.executeScript("return window.sessionStorage.length;");
}
public void setItemInSessionStorage(String item, String value) {
js.executeScript(String.format(
"window.sessionStorage.setItem('%s','%s');", item, value));
}
public void clearSessionStorage() {
js.executeScript(String.format("window.sessionStorage.clear();"));
}
}
Я пытаюсь создать bean-компонент следующим образом:
@Bean
public WebDriver webDriver() {
return new ChromeDriver();
}
наконец, в контроллере, пытающемся вызвать его
@Controller
public class IndexController {
@Autowired
SessionStorage sessionStorage;
@RequestMapping("/")
public String home(Map<String, Object> model) {
sessionStorage.setItemInSessionStorage("browser_tab_id", randomString());
String itemFromSessionStorage = sessionStorage.getItemFromSessionStorage("browser_tab_id");
model.put("message", itemFromSessionStorage);
return "index";
}
}
Я получаю следующую ошибку:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name
'indexController': Unsatisfied dependency expressed through field 'sessionStorage'; nested exception
is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name
'sessionStorage' defined in file [C:\projects\Code\gDocument\spring-boot-
demo\target\classes\com\howtodoinjava\app\controller\SessionStorage.class]: Unsatisfied dependency
expressed through constructor parameter 0; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webDriver'
defined in com.howtodoinjava.app.controller.SpringBootWebApplication: Bean instantiation via factory
method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to
instantiate [org.openqa.selenium.WebDriver]: Factory method 'webDriver' threw exception; nested
exception is java.lang.IllegalStateException: The path to the driver executable must be set by the
webdriver.chrome.driver system property; for more information, see
https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from
http://chromedriver.storage.googleapis.com/index.html