Advertisement
Gamebuster

GWebDriver.class

Jan 12th, 2016
451
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.51 KB | None | 0 0
  1. package com.gamebuster19901.GameBuSK.effects;
  2.  
  3. import java.io.File;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6. import java.util.Map.Entry;
  7.  
  8. import org.bukkit.event.Event;
  9. import org.openqa.selenium.By;
  10. import org.openqa.selenium.Keys;
  11. import org.openqa.selenium.NoSuchElementException;
  12. import org.openqa.selenium.WebDriver;
  13. import org.openqa.selenium.WebDriverException;
  14. import org.openqa.selenium.WebElement;
  15. import org.openqa.selenium.chrome.ChromeDriver;
  16. import org.openqa.selenium.firefox.FirefoxBinary;
  17. import org.openqa.selenium.firefox.FirefoxDriver;
  18. import org.openqa.selenium.firefox.FirefoxProfile;
  19.  
  20. import com.gamebuster19901.GameBuSK.GameBuSK;
  21. import com.gamebuster19901.GameBuSK.exceptions.AlreadyExistsException;
  22. import com.gamebuster19901.GameBuSK.misc.Debug;
  23. import com.gamebuster19901.GameBuSK.types.BrowserType;
  24. import com.gamebuster19901.GameBuSK.types.SearchType;
  25.  
  26. import ch.njol.skript.classes.ClassInfo;
  27. import ch.njol.skript.classes.Parser;
  28. import ch.njol.skript.lang.Expression;
  29. import ch.njol.skript.lang.ParseContext;
  30. import ch.njol.skript.lang.SkriptParser.ParseResult;
  31. import ch.njol.skript.lang.util.SimpleExpression;
  32. import ch.njol.skript.registrations.Classes;
  33. import ch.njol.util.Kleenean;
  34.  
  35.  
  36. public class GWebDriver extends SimpleExpression<GWebDriver>{
  37.     public WebDriver driver;
  38.     public String name;
  39.     public Object type;
  40.     public static Map<String, GWebDriver> GWebDrivers = new HashMap<String, GWebDriver>();
  41.    
  42.     public static void register() {
  43.         Classes.registerClass(new ClassInfo<GWebDriver>(GWebDriver.class, "browser").user("browser").name("browser")
  44.                 .parser(new Parser<GWebDriver>() {
  45.                     @Override
  46.                     public GWebDriver parse(String s, ParseContext context) {
  47.                         return null;
  48.                     }
  49.  
  50.                     @Override
  51.                     public String getVariableNamePattern() {
  52.                         // TODO Auto-generated method stub
  53.                         return ".+";
  54.                     }
  55.  
  56.                     @Override
  57.                     public String toString(GWebDriver locDriver, int flags) {
  58.                         // TODO Auto-generated method stub
  59.                         return getKey(locDriver);
  60.                     }
  61.  
  62.                     @Override
  63.                     public String toVariableNameString(GWebDriver locDriver) {
  64.                         // TODO Auto-generated method stub
  65.                         return getKey(locDriver);
  66.                     }
  67.                 }
  68.         ));
  69.     }
  70.  
  71.     public static String getKey(GWebDriver locDriver){
  72.         for(Entry<String, GWebDriver> entry : GWebDrivers.entrySet()){
  73.             if (locDriver.equals(entry.getValue())){
  74.                 return entry.getKey();
  75.             }
  76.         }
  77.         return locDriver.toString();
  78.     }
  79.    
  80.     public static GWebDriver getWindow(String s){
  81.         GWebDriver locDriver = GWebDrivers.get(s);
  82.         return locDriver;
  83.     }
  84.    
  85.     public static String[] getAllKeys(){
  86.         String[] strings = GWebDriver.GWebDrivers.keySet().toArray(new String[GWebDriver.GWebDrivers.size()]);
  87.         return strings;
  88.     }
  89.    
  90.  
  91.     public static void create(BrowserType finalType, String name) throws AlreadyExistsException {
  92.         GWebDriver value = GWebDrivers.get(name);
  93.         if (value == null) {
  94.             GWebDriver createdDriver = new GWebDriver();
  95.             if (finalType == BrowserType.FIREFOX) {
  96.                 try{
  97.                     FirefoxBinary binary = new FirefoxBinary(GameBuSK.firefoxFL);
  98.                     FirefoxProfile profile = new FirefoxProfile();
  99.                     WebDriver theDriver = new FirefoxDriver(binary,profile);
  100.                     System.out.println("GWebDriver createdDriver is " + createdDriver);
  101.                     createdDriver.driver = theDriver;
  102.                     System.out.println("Driver: " + createdDriver.driver);
  103.                     createdDriver.name = name;
  104.                     System.out.println("Name: " + createdDriver.name);
  105.                     createdDriver.type = BrowserType.FIREFOX;
  106.                     System.out.println("Type: " + createdDriver.type);
  107.                     GWebDrivers.put(name, createdDriver);
  108.                 }
  109.                 catch (WebDriverException e){
  110.                     if (GameBuSK.debug == true){
  111.                         e.printStackTrace();
  112.                     }
  113.                     System.out.println("[SEVERE]: You have not enabled firefox in the config. Stop the server and enable firefox in the config, then restart the server");
  114.                 }
  115.                
  116.             }
  117.             if (finalType == BrowserType.CHROME) {
  118.                 System.out.println(BrowserType.CHROME);
  119.                 try{
  120.                     System.out.println(1);
  121.                     WebDriver theDriver = new ChromeDriver();
  122.                     System.out.println("GWebDriver createdDriver is " + createdDriver);
  123.                     createdDriver.driver = theDriver;
  124.                     System.out.println("Driver: " + createdDriver.driver);
  125.                     createdDriver.name = name;
  126.                     System.out.println("Name: " + createdDriver.name);
  127.                     createdDriver.type = BrowserType.CHROME;
  128.                     System.out.println("Type: " + createdDriver.type);
  129.                     GWebDrivers.put(name, createdDriver);
  130.                     System.out.println(GWebDriver.GWebDrivers + "test");
  131.                 }
  132.                 catch (IllegalStateException e){
  133.                     try{
  134.                         if (GameBuSK.debug == true){
  135.                             e.printStackTrace();
  136.                         }
  137.                         System.out.println("[SEVERE]: You have not enabled chrome in the config. Stop the server and enable chrome in the config, then restart the server");
  138.                     }
  139.                     catch (NullPointerException e2){
  140.                         System.out.println("non-bukkit environment");
  141.                     }
  142.                 }
  143.             }
  144.             if (finalType == BrowserType.GHOST){
  145.                 //TODO add ghost driver
  146.             }
  147.         }
  148.         else{
  149.             throw new AlreadyExistsException(name);
  150.             }
  151.         }
  152.    
  153.     /*
  154.      *
  155.      *
  156.      *
  157.      *
  158.      *
  159.      * Instance stuff
  160.      *
  161.      *
  162.      *
  163.      *
  164.      *
  165.      *
  166.      */
  167.    
  168.     public void stop(){
  169.         String key = getKey(this);
  170.         GWebDrivers.remove(key);
  171.         driver.quit();
  172.     }
  173.    
  174.     public WebDriver type(){
  175.         return (WebDriver) type;
  176.     }
  177.    
  178.     public WebDriver getDriver(){
  179.         return driver;
  180.     }
  181.     public String getName(){
  182.         return name;
  183.     }
  184.    
  185.     public BrowserType getType(){
  186.         if (driver instanceof FirefoxDriver) {
  187.             return BrowserType.FIREFOX;
  188.         }
  189.         if (driver instanceof ChromeDriver){
  190.             return BrowserType.CHROME;
  191.         }
  192.         else{
  193.             return null;
  194.         }
  195.     }
  196.    
  197.  
  198.     public WebElement GetElement(SearchType searchType, String parameter){
  199.         WebElement element;
  200.         try{
  201.             if (searchType == SearchType.CLASS_NAME){
  202.                 element = driver.findElement(By.className(parameter));
  203.                 return element;
  204.             }
  205.             else if (searchType == SearchType.CSS_SELECTOR){
  206.                 element = driver.findElement(By.cssSelector(parameter));
  207.                 return element;
  208.             }
  209.             else if (searchType == SearchType.ID){
  210.                 element = driver.findElement(By.id(parameter));
  211.                 return element;
  212.             }
  213.             else if (searchType == SearchType.LINK_TEXT){
  214.                 element = driver.findElement(By.linkText(parameter));
  215.                 return element;
  216.             }
  217.             else if (searchType == SearchType.NAME){
  218.                 System.out.println("Driver is: " + driver);
  219.                 System.out.println("Type is: " + type);
  220.                 System.out.println("Name is: " + name);
  221.                 System.out.println("Searching by: " + searchType);
  222.                 element = driver.findElement(By.name(parameter));
  223.                 if (element instanceof WebElement){
  224.                     System.out.println(element + " is a Web element");
  225.                 }
  226.                 System.out.println(element);
  227.                 System.out.println(element.getClass());
  228.                 return element;
  229.             }
  230.             else if (searchType == SearchType.PARTIAL_LINK_TEXT){
  231.                 element = driver.findElement(By.partialLinkText(parameter));
  232.                 return element;
  233.             }
  234.             else if (searchType == SearchType.TAG_NAME){
  235.                 element = driver.findElement(By.tagName(parameter));
  236.                 return element;
  237.             }
  238.             else if (searchType == SearchType.XPATH){
  239.                 element = driver.findElement(By.xpath(parameter));
  240.                 return element;
  241.             }
  242.         }
  243.         catch (NoSuchElementException e){
  244.             if (GameBuSK.debug == true){
  245.                 e.printStackTrace();
  246.             }
  247.             System.out.println("No element was found using " + type + " with parameter \"" + parameter + "\" in " + driver.getTitle());
  248.         return null;
  249.         }
  250.         return null;
  251.     }
  252.    
  253.     public void newTab() {
  254.         try {
  255.             if (GameBuSK.os.contains("Mac") || GameBuSK.os.contains("OS X")) {
  256.                 Debug.Debug("newtab MAC");
  257.                 driver.findElement(By.cssSelector("body")).sendKeys(Keys.COMMAND + "t");
  258.  
  259.             } else {
  260.                 Debug.Debug("newtab other");
  261.                 Debug.Debug("driver");
  262.                 Debug.Debug("------------------------------------------------");
  263.                 Debug.Debug("Driver: " + driver);
  264.                 Debug.Debug("Name: " + name);
  265.                 Debug.Debug("Type: " + type);
  266.                 Debug.Debug("Driver: " + driver);
  267.                 Debug.Debug("This: " + this);
  268.                 driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
  269.             }
  270.         } catch (NullPointerException e) { //This will be null in a non-bukkit environment, in which case it assumes it's running on windows
  271.             System.out.println("Possible non-bukkit environment detected, assuming operating system is WINDOWS and trying again. A Nullpointer exception will appear below.");
  272.             e.printStackTrace();
  273.             driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
  274.         }
  275.     }
  276.    
  277.     public void goTo(String URL){
  278.         try{
  279.             driver.get(URL);
  280.         }
  281.         catch (WebDriverException e){
  282.             System.out.println(URL + " is not a valid url, cannot go there");
  283.         }
  284.     }
  285.  
  286. /*
  287.  *
  288.  *
  289.  *
  290.  *
  291.  *
  292.  */
  293.     private Expression<String> objname;
  294.     @Override
  295.     public Class<? extends GWebDriver> getReturnType() {
  296.         // TODO Auto-generated method stub
  297.         return GWebDriver.class;
  298.     }
  299.  
  300.     @Override
  301.     public boolean isSingle() {
  302.         // TODO Auto-generated method stub
  303.         return true;
  304.     }
  305.  
  306.     @Override
  307.     public boolean init(Expression<?>[] expr, int matchedPattern, Kleenean arg2, ParseResult arg3) {
  308.         // TODO Auto-generated method stub
  309.         objname = (Expression<String>) expr[0];
  310.         return true;
  311.     }
  312.  
  313.     @Override
  314.     public String toString(Event arg0, boolean arg1) {
  315.         // TODO Auto-generated method stub
  316.         return "browser";
  317.     }
  318.  
  319.     @Override
  320.     protected GWebDriver[] get(Event e) {
  321.         // TODO Auto-generated method stub
  322.         return new GWebDriver[]{this};
  323.     }
  324.     /*
  325.     public static GWebDriver getWindow(String s){
  326.         GWebDriver locDriver = GWebDrivers.get(s);
  327.         return locDriver;
  328.     }
  329.      */
  330. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement