使用eval函数在Selenium中创建驱动程序对象

时间:2014-09-20 15:28:59

标签: java selenium

我正在尝试使用eval函数在selenium中创建驱动程序对象。但是我得到一个错误 - “ReferenceError:”FirefoxDriver“未定义”。在行 - “Object objBrow = objJSEngine.eval(strTxt);”

因为我想最终将string -driver类型放在属性文件中。下面是代码。 任何人都可以帮我这个。感谢。

package septmeber;
import java.util.concurrent.TimeUnit;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Initial {

public static void main(String arrParm[]) throws ScriptException
{
    //Declare Variables
    String strClassName;
    By objBYTwiter;
    WebElement objTwitterTag;
    String strBorwserType;
    String strTxt;
    String strURL;

    objBYTwiter = null;
    objTwitterTag = null;
    strClassName = "span[class = 'at16nc at300bs at15nc at15t_twitter at16t_twitter']";
    strBorwserType = "FirefoxDriver"; 
    strURL = "http://www.tutorialspoint.com/java/java_enumeration_interface.htm";

     //Create Driver object
    ScriptEngineManager objManager = new ScriptEngineManager();
    ScriptEngine objJSEngine = objManager.getEngineByName("js");     
    strTxt = "new"+"\t "+strBorwserType+"();" ;
    Object objBrow = objJSEngine.eval(strTxt);
    WebDriver objBrowser = (WebDriver)objBrow;

    //Launch the application
    objBrowser.get(strURL);
    objBrowser.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);        
    System.out.println("Application launched");
    objBrowser.manage().window().maximize();

    //Click Twitter Link
    objBYTwiter = By.cssSelector(strClassName);
    objTwitterTag = objBrowser.findElement(objBYTwiter);
    objTwitterTag.click();      

    }

}

1 个答案:

答案 0 :(得分:0)

你所要求的是不可能的。

您可以创建类似以下的方法:

WebDriver selenium;

public void setSelenium(String driver) {

    if (driver.equals("firefox")) {
        selenium = new FirefoxDriver();
    } else if (driver.equals("chrome")) {
        System.setProperty("webdriver.chrome.driver", "path to chrome");
        selenium = new ChromeDriver();
    }   // define more as you need
}

然后你可以用以下方法调用这个方法:

setSelenium(System.getenv("browser"));

在您的环境中,您首先将变量“浏览器”设置为您想要运行的任何一个。您也可以从其他内容中获取此值,例如文件。