当前位置: 首页 > 面试题库 >

无法通过FirefoxProfile参数在webdriver中使用首选项下载文件

邹高懿
2023-03-14
问题内容
public class download {
    public static WebDriver driver;

    public static void main(String[] args) throws InterruptedException {

        System.setProperty("webdriver.gecko.driver", "/home/ranjith/Downloads/geckodriver");
        //driver = new FirefoxDriver();

        FirefoxProfile profile = new FirefoxProfile();

        profile.setPreference("browser.download.dir", "/home/ranjith/Downloads");
        profile.setPreference("browser.download.folderList", 2);

        profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");        
        profile.setPreference( "browser.download.manager.showWhenStarting", false );
        profile.setPreference( "pdfjs.disabled", true );

        driver = new FirefoxDriver(profile);

        driver.get("http://toolsqa.com/automation-practice-form/");
        driver.findElement(By.linkText("Test File to Download")).click();

        Thread.sleep(5000);

        //driver.close();
    }
}

要求删除参数配置文件以匹配Eclipse中的FirefoxDriver,可以帮助您解决此问题。

在此行抛出错误

driver = new FirefoxDriver(profile);

问题答案:

根据 FirefoxDriver 类的 Selenium JavaDoc ,不再支持method为有效。
__FirefoxDriver(profile)``Constructor

相反,鼓励使用FirefoxOptions扩展的类,MutableCapabilities
org.openqa.selenium.MutableCapabilities

因此,当您通过执行每次创建新的 FirefoxProfiledriver = new FirefoxDriver(profile);,必须使用
FirefoxOptions 类中的setProfile()方法,该方法定义为: __

public FirefoxOptions setProfile(FirefoxProfile profile)

您的代码块将是:

System.setProperty("webdriver.gecko.driver", "/home/ranjith/Downloads/geckodriver");
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.dir", "/home/ranjith/Downloads");
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");        
profile.setPreference( "browser.download.manager.showWhenStarting", false );
profile.setPreference( "pdfjs.disabled", true );
FirefoxOptions opt = new FirefoxOptions();
opt.setProfile(profile);
driver = new FirefoxDriver(opt);


 类似资料:
  • 问题内容: 我正在使用seleniumjava工作,需要下载pdf文件,但是在我的情况下似乎没有任何效果。是由于设置了新的firefox驱动程序实例ie吗?我被困在这里。但是,当我在MIME对话框上手动单击保存文件时,它可以正确保存到我的自定义位置,我的下载链接代码也位于另一个Java类中,而位于另一个类的下面,但是我使用的驱动程序与在此类中声明的,以下是我的代码, 问题答案: 以下代码块使用直通

  • 我正在使用selenium java来下载pdf文件,我在这里引用了这个,这个和这个答案,但似乎没有什么在我的情况下工作。是否由于设置了新的firefox驱动程序实例,即?然而,当我手动单击MIME对话框中的save file时,它会正确地保存到我的自定义位置,我的下载链接代码也位于另一个java类中,下面的代码位于另一个类中,但我使用了与该类中声明的相同的驱动程序,下面是我的代码,

  • 我正在使用Selenium Webdriver(Python)自动下载数千个文件。我想以编程方式设置Chrome的下载文件夹。看完后,我试了一下: 无益。下载仍然会转到默认的下载文件夹(“/Users/thiagomarzagao/Downloads”)。 有什么想法吗? (Python 2.7.5, Selenium 2.2.0, Chromedriver 2.1.210398, Mac OS

  • 我的代码如下所示: 我也尝试过在选择器上执行点击操作,或者刷新页面,但这些操作都不起作用。我猜这个网页上有一些Javascript? 提前道谢! --Java version 7 Selenium version 2

  • 问题内容: 我有一个生成CSV文件并将其通过http / ajax get返回到页面的服务。我希望用户单击按钮,调用服务,然后将文件下载到用户的浏览器。 我想使用Angular Way,尽管我认识到这可能与Ajax或浏览器的关系要比Anguler本身更多。 该服务在C#中,它返回的内容是: 调用该服务的控制器代码如下所示。它有效,但是我不知道如何成功: 问题答案: 您无法从常规的ajax GET或

  • 我做我的代码在CromeDrive在'正常'模式和工作正常。当我切换到无头模式时,它不会下载文件。我已经尝试了我在互联网上找到的代码,但是不起作用。 有人知道如何解决这个问题吗? PS:我不一定要用Chomedrive。如果它在另一个驱动器中工作,对我来说没问题。