对于我的一些selenium脚本,我需要使用JavaScriptExecuter并且为了在selenium中使用它,我需要声明JavaScriptExecutor js =(JavaScriptExecutor)驱动程序。请建议我为什么需要传递上面的Webdriver参考? 另外为了更好地理解这个概念,有人可以通过示例告诉JAVA中的上传和下传是什么。
答案 0 :(得分:0)
在java中,为了使用任何接口/类上可用的方法,该对象应该是相同的类或实现接口的类。我不会详细介绍java,但是对于这种特殊情况。 JavaScriptExecutor js =(JavaScriptExecutor)驱动程序
如果我们想使用JavaScriptExecutor接口中可用的任何方法,如executeScript或executeAsyncScript,我们必须将驱动程序对象转换为JavaScriptExecutor,因为这些方法在WebDriver接口中不可用。因此,如果我们将驱动程序定义为:
WebDriver driver = new ChromeDriver(); // or any other driver
我们想使用此驱动程序执行脚本。我们首先必须将它转换为JavaScriptExecutor,然后我们可以在其上调用executeScript。 如果我们尝试直接在驱动程序上调用executeScript而不将其强制转换为JavaScriptExecutor,它将尝试在WebDriver接口中找到executeScript方法,并且因为它在Webdriver中不可用,Java编译器会抱怨