Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将WebDriver实例强制转换为JavascriptExecutor_Java_Selenium_Casting_Nullpointerexception - Fatal编程技术网

无法将WebDriver实例强制转换为JavascriptExecutor

无法将WebDriver实例强制转换为JavascriptExecutor,java,selenium,casting,nullpointerexception,Java,Selenium,Casting,Nullpointerexception,我正在运行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].nam

我正在运行
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);
private final WebDriver driver;

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


public WebDriverDecorator(WebDriverAdapter driver, ...)
{
    this.driver = driver;
    ....; // Random String parameter.
}
然后,我创建了另一个名为
WebDriverDecorator
的类,它接受
webdriverdapter
的实例。该类如下所示:

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);
private final WebDriver driver;

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


public WebDriverDecorator(WebDriverAdapter driver, ...)
{
    this.driver = driver;
    ....; // Random String parameter.
}
当我尝试将任何驱动程序强制转换为JS executor时,我会得到一个
类强制转换异常

另一方面,如果我同时拥有
webdriverdapter
WebDriverDecorator
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..
WebDriver-FFDriver=新的FirefoxDriver();
WebDriverAdapter driverAdapter=新的WebDriverAdapter(FFDriver);
WebDriverDecorator driverDecorator=新的WebDriverDecorator(DriverDatapter,“…”);
driverDecorator.navigate()到(“http://google.com"); // 工作正常
字符串XPath=(“//*[@id='gbw']/div/div/div[1]/div[1]/a”);
WebElement e1=driver.findelementbypath(…);
System.out.println(e1.getText());//工作正常
对象aa=((JavascriptExecutor)driverDecorator).executeScript(“var items={};for(index=0;index
好的,我为此工作了一段时间,找到了解决方案。既然没有人回答这个问题,我就把我想出的答案贴出来


基本上,我需要做的就是将
implements JavascriptExecutor
添加到
WebDriverCorator
WebDriverDatapter
中,并添加未实现的方法(例如
executeScript(字符串arg0,对象…arg1)
)。然后,我将在未实现的方法中将每个驱动程序强制转换为
JS executor
,现在我可以直接在
webdrivercorator
webdriverdapter
的驱动程序上调用
executeScript()
,而不强制转换任何内容。

还可以给出webdrivercorator类的代码。添加了代码。