繁体   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