簡體   English   中英

JavaScriptExecutor js = new ChromeWebDriver(); 不適用於 Selenium

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM