当前位置: 首页 > 知识库问答 >
问题:

如何在运行时使用Selenium和chrome驱动程序更改下载路径

解阳荣
2023-03-14

我有20个页面,每个页面有2个测试用例,每个测试用例下载一些文件。我想在运行时为每个测试用例更改下载目录。

这里是“TestBaseClass”代码,它下载一个特定文件夹中的所有文件,我必须将它们按类别分开,并将它们放入一个特定文件夹。有20个文件夹,每个文件夹有2个子文件夹'ChapterLevel'和'PracticeLevel',我必须手动放置它。

是否可以通过在运行时传递变量来更改下载目录?

我的TestBaseClass代码

public static WebDriver driver;

public static void initialization() throws InvocationTargetException {
    try {

        // Setting new download directory path
        Map<String, Object> prefs = new HashMap<String, Object>();

        // Use File.separator as it will work on any OS
        prefs.put("download.default_directory", "C:\\Users\\pd\\Desktop\\AHNPTTest");

        // Adding cpabilities to ChromeOptions
        ChromeOptions options = new ChromeOptions();
        options.setExperimentalOption("prefs", prefs);

        // Launching browser with desired capabilities
        WebDriverManager.chromedriver().setup();
        driver = new ChromeDriver(options);

    } catch (Exception e) {
        // generic exception handling
        e.printStackTrace();
    }

    driver.manage().window().maximize();
    driver.manage().deleteAllCookies();
    driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
}

下面是我的测试案例:

public class ANA_TC16_RiskAnalysisNewTest extends TestBaseClass {
    ANA_RiskAnalysisNewPage New;

    @BeforeMethod
    public void setUp() {
        try {
            initialization();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        login();
        New = new ANA_RiskAnalysisNewPage();
    }

    @Test
    public void chapterrLevelTest() throws Exception {
        New.hoverTest();
        New.clickBottomOptions();
        New.chapterOption();
        New.TopX();
        New.ATISlider();
        New.conditionSelection();
        New.takeScreenshot("Risk Analysis New Chapter Level Image");
        New.downloadOptions();
        New.isFileDownloaded();
    }

    @Test
    public void practiceLevelTest() throws Exception {
        New.hoverTest();
        New.clickBottomOptions();
        New.providerOption();
        New.TopX();
        New.ATISlider();
        New.conditionSelection();
        New.takeScreenshot("Risk Analysis New Practice Level Image");
        New.downloadOptions();
        New.isFileDownloaded();
    }
}

共有1个答案

须原
2023-03-14

假设您希望为每个测试方法指定下载文件夹。

  1. TestBaseClass中的Initialization中添加DownloadPath的参数。
  2. ANA_TC16_RiskAnalysisNewTest中为Setup添加DownloadPath参数,删除@BerForMethod批注,并更新每个测试方法以在“以所需的DownloadPath开始”中调用Setup
public class TestBaseClass {
    public static void initialization(String downloadPath) throws InvocationTargetException {
        try {
                 
               // Setting new download directory path
               Map<String, Object> prefs = new HashMap<String, Object>();
                
               // Use File.separator as it will work on any OS
               prefs.put("download.default_directory", downloadPath);
        ...
public class ANA_TC16_RiskAnalysisNewTest extends TestBaseClass {
    ANA_RiskAnalysisNewPage New;
    
    // @BeforeMethod
    public void setUp(String downloadPath) {
        try {
            initialization(downloadPath);
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        login();
        New = new ANA_RiskAnalysisNewPage();
    }

    @Test
    public void chapterrLevelTest() throws Exception {
        setUp("C:\\Users\\pd\\Desktop\\AHNPTTest\\ANA_TC16_RiskAnalysis\\ChapterLevel");
        New.hoverTest();
        ...
    }

    @Test
    public void practiceLevelTest() throws Exception {
        setUp("C:\\Users\\pd\\Desktop\\AHNPTTest\\ANA_TC16_RiskAnalysis\\PracticeLevel");
        New.hoverTest();
        ...
    }
    ...
 类似资料:
  • 问题内容: 我正在尝试运行一个ruby文件,该文件将使用seleniumwebdriver启动chrome驱动程序。我有selenium独立服务器2.35.0。和chromedriver可执行文件已安装。我正在通过运行服务器来启动 两个会话正在启动,chrome驱动程序无法启动。 这是在我使用以下文件运行文件之后 我对此并不陌生,无法找出问题所在。而且,我也试图让它无头运行,所以我正在运行Xvfb

  • 我试图运行一个ruby文件,这将启动chrome驱动程序使用selenium WebDriver。我有selenium独立服务器2.35.0。和chromedriver可执行文件安装。我通过运行来启动服务器, 这是在我使用 我对此很陌生,不知道哪里出了问题。我也试图无头运行它,所以我有Xvfb运行。有人能帮我指出我犯的错误并启动chromedriver吗? 更新: 谁能帮我弄清楚出了什么问题吗?

  • 我试图运行一个项目在硒与铬驱动程序,但我没有使用它一个月后(是一个更新到铬)。当我运行这个项目时,它会打开浏览器,然后立即关闭。 我收到以下错误: Traceback(最近一次调用最后一次):文件"C:\用户\maorb\OneDrive\Desktop\Maor\python\serethd\tvil_arthur.py",第27行,在驱动程序=webDrive中。Chrome()File"C:

  • 按照标题,我有一个远程selenium驱动程序(带有Chrome功能),我需要改变它的用户代理,而不需要创建另一个驱动程序。

  • 使用Selenium和Chrome驱动程序下载文件后,如何获取文件名称? 本网站避免了这个问题,但给出了简单案例的示例:http://ardesco.lazerycode.com/index.php/2012/07/how-to-download-files-with-selenium-and-why-you-shouldnt/ 我的链接是一个JavaScript链接,弹出一个新窗口并自动下载文件