Skip to content
This repository was archived by the owner on Feb 2, 2025. It is now read-only.

added RobotString class for working with system properties and string… #74

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.github.markusbernhardt.seleniumlibrary;

import com.github.markusbernhardt.seleniumlibrary.keywords.BrowserManagement;
import com.github.markusbernhardt.seleniumlibrary.keywords.Robot;
import org.openqa.selenium.WebDriver;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.lang.reflect.Field;

/**
* For extends of custom keywords of WebDriver actions
*/
public class CustomRobotDriverElement {

private static SeleniumLibrary s;
private static BrowserManagement b;
private Robot robot = new Robot();

public CustomRobotDriverElement() throws NoSuchFieldException, IllegalAccessException {
try {
CustomRobotDriverElement.s = getLibraryInstance();
} catch (ScriptException e) {
throw new SeleniumLibraryNonFatalException("Cannot create SeleniumLibrary instance.", e);
}
Field bmField = SeleniumLibrary.class.getDeclaredField("bm");
bmField.setAccessible(true);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we change the visibility back to the previous state after getting what we need?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

b = (BrowserManagement) bmField.get(s);
bmField.setAccessible(false);
}

private static SeleniumLibrary getLibraryInstance() throws ScriptException {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");
engine.put("library", "SeleniumLibrary");
engine.eval("from robot.libraries.BuiltIn import BuiltIn");
engine.eval("instance = BuiltIn().get_library_instance(library)");
return (SeleniumLibrary) engine.get("instance");
}

protected WebDriver getCurrentBrowser() {
return b.getCurrentWebDriver();
}

protected Robot getRobot() {
return robot;
}

}