gpt4 book ai didi

java - 无法使用 Marionette/Firefox 驱动程序截取屏幕截图

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

使用 Marionette geckodriver 版本 0.19.1。

以下是设置 Marionette/Firefox 功能的方法:

private static DesiredCapabilities setMarionetteCapabilities() {
setMarionetteDriver(); // sets the correct path to the executable

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.startup.homepage", "about:blank");

FirefoxOptions options = new FirefoxOptions();

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
capabilities.setCapability(FirefoxDriver.PROFILE, profile);
capabilities.setCapability(FirefoxOptions.FIREFOX_OPTIONS, options);
return capabilities;
}

这是我尝试截取屏幕截图的地方。此代码在 Chrome 中运行良好,最初在 Firefox 中运行良好,但现在由于无法运行而失败。

public static String takeScreenShot(String caption)  {
System.out.println( "Test: " + ((HasCapabilities)driver).getCapabilities());

if(!((HasCapabilities)driver).getCapabilities().is(CapabilityType.TAKES_SCREENSHOT)) {
System.out.println("Cannot take a screenshot");
return "";
}

TakesScreenshot camera = (TakesScreenshot)driver;
File scrFile = camera.getScreenshotAs(OutputType.FILE);
String filename = getFilename(caption);

try {
FileUtils.moveFile(scrFile, new File(captureDir + sep + filename));
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Saved to: " + captureDir + sep + filename);
return filename;
}

但是每当我调用该方法时,它只是回复说无法截屏。以下是 getCapability() 的结果:

[  
{
moz:profile=C:\Users\____\AppData\Local\Temp\rust_mozprofile.9tfK2yUnv4jV,
rotatable=false,
timeouts= {
implicit=0,
pageLoad=300000,
script=30000
},
pageLoadStrategy=normal,
moz:headless=false,
platform=XP,
moz:accessibilityChecks=false,
acceptInsecureCerts=true,
browserVersion=57.0.4,
platformVersion=10.0,
moz:processID=11332,
browserName=firefox,
javascriptEnabled=true,
platformName=XP,
moz:webdriverClick=false
}
]

显然,没有列出takeScreenshot 功能。

我已经尝试过

    capabilities.setCapability("takesScreenshot", true);

但这似乎没有任何作用。

那么如何重新添加捕获屏幕截图的功能?

注意:我目前在 Windows 10 计算机上运行此程序,但它也将在 Mac 和 Linux 系统上运行,因此答案需要与操作系统无关。

最佳答案

好吧,愚蠢的答案

木偶可以截屏;它只是没有报告它可以。当我在方法开始时删除测试后,一切都运行良好。对于感兴趣的人来说,这是 final方法:

public static String takeScreenShot(String caption)  {
String filename = getFilename(caption);

try {
TakesScreenshot camera = (TakesScreenshot)driver;
File scrFile = camera.getScreenshotAs(OutputType.FILE);

FileUtils.moveFile(scrFile, new File(captureDir + sep + filename));
System.out.println("Saved to: " + captureDir + sep + filename);
} catch (Exception e) {
System.out.println("Cannot take a screenshot");
}

return filename;
}

关于java - 无法使用 Marionette/Firefox 驱动程序截取屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48217648/

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