簡體   English   中英

如何在運行時使用帶有 chrome 驅動程序的 Selenium 更改下載路徑

[英]How to change download path during runtime using Selenium with chrome driver

我有 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. TestBaseClassinitialization中為downloadPath添加參數。
  2. ANA_TC16_RiskAnalysisNewTestsetup中添加downloadPath參數,刪除@BerforMethod注釋並更新每個測試方法以調用setup in begin with desired downloadPath
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();
        ...
    }
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM