0
我試圖使用eval函數在硒中創建驅動程序對象。但是出現錯誤 - 「ReferenceError:」FirefoxDriver「未定義」。在行 - 「Object objBrow = objJSEngine.eval(strTxt);」使用eval函數在Selenium中創建驅動程序對象
因爲我想最終將屬性文件中的字符串驅動程序類型。以下是代碼。 任何人都可以幫助我解決這個問題。謝謝。
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();
}
}
'ScriptEngineManager'與Selenium完全無關,所以這就是爲什麼你會收到這些錯誤。你究竟在做什麼? – Arran 2014-09-21 08:16:41
要在運行時評估表達式(lik - 3 * 5 + 5或x = y),我們可以使用ScriptEngineManager中提供的eval函數。我的問題是我們可以使用相同的概念在運行時創建對象嗎? – user1925406 2014-09-21 11:24:21
這就是創建對象的例子 - new FireFoxDriver(); 我們可以這樣做 - obj.eva(「new」+「/ t」+「FireFoxDriver」+「();」) 這樣我就可以在運行時通過串聯一個變量來替換驅動程序名稱。 – user1925406 2014-09-21 11:28:18