![](/img/trans.png)
[英]Why does this Javascript work in the browser console but not in Selenium's JavascriptExecutor?
[英]JavaScriptExecutor js = new ChromeWebDriver(); does not work in Selenium
我試圖理解 Selenium API,發現 RemoteWebDriver class 實際上實現了 WebDriver 和 JAVAScriptExecutor 抽象方法,而且我們還有用於特定瀏覽器實現的子類,如 chromedriver、firefoxdriver 等。
我想知道為什么會這樣
無效的 'JavaScriptExecutor js = new ChromeDriver();'
但是這個 VALID 'WebDriver driver = new ChromeDriver();' VALID 'JavaScriptExecutor js = (JavaScriptExecutor) driver;' VALID 'JavaScriptExecutor js = (JavaScriptExecutor) new ChromeDriver();'
請注意,第一個給出錯誤“類型不匹配:無法從 ChromeDriver 轉換為 JavaScriptExecutor”。
我試圖研究 selenium API 和向上轉型/向下轉型的概念,但無法理解為什么只有 JavaScriptExecutor 需要在這里進行類型轉換而不是 WebDriver,盡管它們都是由 RemoteWebDriver class 實現的。
您缺少演員表:
WebDriver driver = new ChromeDriver(); // Assigned elsewhere
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("return document.title");
ChromeDriver 是一個孩子 class,它繼承了 RemoteWebDriver 實現的所有接口。 JavascriptExecutor 只是 ChromeDriver (RemoteWebDriver) 實現的接口之一。
參考:
https://www.selenium.dev/documentation/legacy/selenium_2/faq/#q-how-do-i-execute-javascript-directly
https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/chrome/ChromeDriver.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.