我有一个动态功能,要在页面加载后添加。我需要这样做,因为函数名称取决于解析HTML之后获得的某些变量。现在,我已经做到了:

规范:我在PhantomJS 1.9.8中使用硒3.3.1

((JavascriptExecutor) driver).executeScript(" eval('function getVoteX1() { return 1; }')");
String testScript = (String)((JavascriptExecutor) driver).executeScript(" getVoteX1()");
System.out.println(testScript);


但是当我运行它时,它会引发错误:

Caused by: org.openqa.selenium.WebDriverException: {"errorMessage":"Can't find variable: getVoteX1","request":{"

注意:最终,getVoteX1将被其他变量替换,但是为了简单起见,我首先尝试使用静态名称。

最佳答案

将新功能分配给window对象,即equivalent to defining a global variable

((JavascriptExecutor) driver).executeScript("window.getVoteX1 = function() { return 1; }");
String testScript = (String)((JavascriptExecutor) driver).executeScript(" getVoteX1()");

09-15 16:56