gpt4 book ai didi

java - 无法将 WebDriver 实例转换为 JavascriptExecutor

转载 作者:行者123 更新时间:2023-11-30 10:31:56 26 4
gpt4 key购买 nike

我正在运行 WebDriver (Selenium) 并且我正在尝试将 WebDriver 驱动程序 转换为 JavascriptExecutor如下:

Object aa = ((JavascriptExecutor)driver).executeScript("var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;", this.element);

但是,当我运行这段代码时,我要么得到一个类转换异常,要么得到一个空指针异常。

我的情况如下:我创建了一个 WebDriverAdapter 类,它接受 WebDriver 的具体实例,如下所示:

private final WebDriver driver;

public WebDriverAdapter(WebDriver driver)
{
this.driver = driver;
}

然后我创建了另一个名为 WebDriverDecorator 的类,它接受 WebDriverAdapter 的实例。该类如下所示:

WebDriverAdapter driver;


public WebDriverDecorator(WebDriverAdapter driver, ...)
{
this.driver = driver;
....; // Random String parameter.
}

当我尝试将任何驱动程序转换为 JS 执行程序时,我得到了一个类转换异常

另一方面,如果我有 WebDriverAdapterWebDriverDecorator extend RemoteWebDriver没有得到一个类抛出异常,但我确实得到了一个NullPointerException

我该如何解决这个问题?

谢谢

编辑Main 中,我的程序如下所示:

WebDriver FFDriver = new FirefoxDriver();   
WebDriverAdapter driverAdapter = new WebDriverAdapter(FFDriver);
WebDriverDecorator driverDecorator = new WebDriverDecorator(driverAdapter, "....");

driverDecorator.navigate().to("http://google.com"); // Works correctly



String XPath = ("//*[@id='gbw']/div/div/div[1]/div[1]/a");

WebElement e1 = driver.findElementByXPath(.....);



System.out.println(e1.getText()); // Works correctly


Object aa = ((JavascriptExecutor)driverDecorator).executeScript("var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;", e1); // Causes NullPointerException or Class cast exception depending on if I extend remote web driver or not..

最佳答案

好的,我为此工作了一段时间并找到了解决方案。由于没有人回答这个问题,我将发布我想出的答案。

基本上,我需要做的就是将 implements JavascriptExecutor 添加到 WebDriverDecoratorWebDriverAdapter 并添加未实现的方法(例如 executeScript(String arg0, Object... arg1) ).然后,我将在未实现的方法中将每个相应的驱动程序转换为 JS executor,现在我可以直接在 WebDriverDecorator 的驱动程序上调用 executeScript() > 或 WebDriverAdapter 无需强制转换。

关于java - 无法将 WebDriver 实例转换为 JavascriptExecutor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42929786/

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