2016-08-17 34 views
-1

對於我的一些硒腳本,我需要使用JavaScriptExecuter並且爲了在硒中使用它,我需要聲明JavaScriptExecutor js =(JavaScriptExecutor)驅動程序。請提醒我爲什麼需要通過上面的Webdriver參考? 爲了更好地理解這個概念,有人可以通過例子提一下在JAVA中向上轉換和向下轉換的建議。SeleniumJava Upcasting and Downcasting

+0

此問題過於寬泛。網絡上已經有很多例子。只需谷歌他們,並閱讀一些。 – JeffC

回答

0

在java中,爲了使用任何接口/類上可用的方法,對象應該具有相同的類或實現該接口的類。我不會深入java的細節,但對於這種特殊情況。 JavaScriptExecutor JS =(JavaScriptExecutor)驅動

如果我們要使用在像executeScript或executeAsyncScript JavaScriptExecutor接口可用的任何方法,我們將有鑄驅動程序對象以JavaScriptExecutor的,因爲這些方法不在的webdriver接口可用。因此,如果我們將驅動程序定義爲:

WebDriver driver = new ChromeDriver(); // or any other driver 

並且我們希望使用此驅動程序執行腳本。我們首先必須將其轉換爲JavaScriptExecutor,然後我們可以調用它的executeScript。 如果我們嘗試直接調用驅動程序上的executeScript而不將其轉換爲JavaScriptExecutor,它將嘗試在WebDriver接口中查找executeScript方法,並且因爲它在Webdriver中不可用,Java編譯器會投訴