我正在尝试使用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();
}
}
答案 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"));
在您的环境中,您首先将变量“浏览器”设置为您想要运行的任何一个。您也可以从其他内容中获取此值,例如文件。