gpt4 book ai didi

java - 自定义 WebDriver 无法与 Selenium Actions 方法交互

转载 作者:行者123 更新时间:2023-12-02 11:17:02 24 4
gpt4 key购买 nike

我必须使用 Selenium Actions 类来使用 doubleclick 方法与页面上的某些元素进行交互。这与 WebDriver (driver = DriverFactory.open(browserType);) 配合得很好,但是当我将其转换为下面我自己的自定义 WebDriver 时,不会执行双击。

当我在 Debug模式下运行时,我可以看到使用自定义驱动程序调用了 doubleclick 方法,但鼠标被评估为 null。

有谁知道为什么我的自定义驱动程序不能与 Actions 一起使用?

package utilities;

import java.util.List;
import java.util.Set;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class CustomWebDriver implements WebDriver, JavascriptExecutor
{
private WebDriver driver;

private boolean hasQuit = false;

public CustomWebDriver(String browserType)
{
driver = DriverFactory.open(browserType);
hasQuit = false;
}

@Override
public void get(String url)
{
driver.get(url);
}

@Override
public String getCurrentUrl()
{
return driver.getCurrentUrl();
}

@Override
public String getTitle()
{
return driver.getTitle();
}

@Override
public List<WebElement> findElements(By by)
{
return driver.findElements(by);
}

@Override
public WebElement findElement(By by)
{
return driver.findElement(by);
}

@Override
public String getPageSource()
{
return driver.getPageSource();
}

@Override
public void close()
{
driver.close();
}

@Override
public void quit()
{
driver.quit();
hasQuit = true;
}

@Override
public Set<String> getWindowHandles()
{
return driver.getWindowHandles();
}

@Override
public String getWindowHandle()
{
return driver.getWindowHandle();
}

@Override
public TargetLocator switchTo()
{
return driver.switchTo();
}

@Override
public Navigation navigate()
{
return driver.navigate();
}

@Override
public Options manage()
{
return driver.manage();
}

public boolean hasQuit()
{
return hasQuit;
}

@Override
public Object executeScript(String script, Object... args)
{
return ((JavascriptExecutor) driver).executeScript(script, args);
}

@Override
public Object executeAsyncScript(String script, Object... args)
{
return ((JavascriptExecutor) driver).executeAsyncScript(script, args);
}
}

最佳答案

自定义WebDriver需要实现Interactive界面。 Actions类在其自己的 Perform() 方法中调用此接口(interface)的 perform() 方法。

您可能还需要实现 HasInputDevices界面。

您还可以扩展现有的 RemoteWebDriver并定制了它。使您免于重复方法。

关于java - 自定义 WebDriver 无法与 Selenium Actions 方法交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50198495/

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