繁体   English   中英

为什么我们需要将Firefox驱动程序强制转换为javascript执行程序?

[英]Why do we need to typecast Firefox driver to javascript executor?

我是Java和Selenium的初学者,我在工作时遇到了JavascriptExecutor

想知道:虽然远程webdriver和Firefox驱动程序实现了javascript执行程序,但为什么我不能直接访问executeScript()方法,为什么要进行类型转换才能获得访问权限?

这是javascript执行程序的程序:

public class entertextwithoutsendkeys
{
    WebDriver driver;

    public entertextwithoutsendkeys()
    {
        driver = new FirefoxDriver();
    }

    @Test
    public void entertextpgm()
    {
        driver.get("https://www.gmail.com/");
        JavascriptExecutor executor = (JavascriptExecutor) driver;
        executor.executeScript("document.getElementById('Email').value='sh'");
    }
}

您的driver变量(实际上是字段)声明为WebDriver类型。

由于FirefoxDriver实现了WebDriver ,您可以new FirefoxDriver()driver分配new FirefoxDriver()

现在您要执行一些JavaScript命令。 为此,您必须使用JavascriptExecutor接口的executeScript()方法。

JavascriptExecutorWebDriver接口无关(例如,这个不扩展那个接口),但FirefoxDriver碰巧实现了这两者。

因此,即使您的driver变量被视为WebDriver (由于其声明),它实际上将值保存为FirefoxDriver的实例 - 因此它的值也是 JavascriptExecutor (因为FirefoxDriver implements JavascriptExecutor )。

但是,您必须找到一种“查看”该driver变量的方法,就像它是一个JavascriptExecutor ,因此您可以执行此接口的方法(如executeScript() )。 要做到这一点的方式 ,这种“看”, 是铸造 ,就像你一样。

如果您声明类型为FirefixDriver driver ,则不必进行任何FirefixDriver 亲自尝试一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM