gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:00:12 28 4
gpt4 key购买 nike

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

想知道:虽然 Remote webdriver 和 Firefox driver 实现了 javascript executor,但为什么我不能直接访问 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没有问题。

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

JavascriptExecutorWebDriver无关接口(interface)(例如,这个接口(interface)不扩展那个接口(interface)),但是 FirefoxDriver恰好同时实现了这两者。

因此,即使您的 driver变量被视为 WebDriver (由于它的声明),它实际上持有 FirefoxDriver 的一个实例作为值- 因此它的值 JavascriptExecutor同样(因为 FirefoxDriver implements JavascriptExecutor )。

仍然,您必须找到一种“查看”driver 的方法变量就好像它是一个 JavascriptExecutor , 所以你可以执行这个接口(interface)的方法(比如 executeScript() )。 做这件事的方法,这个“看”,正在转换,就像你所做的那样。

如果声明 driver,则无需进行任何转换自类型 FirefixDriver .亲自尝试。

关于javascript - 为什么我们需要将 Firefox 驱动程序强制转换为 javascript 执行程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32364561/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com