我如何在Selenium中使用chrome在运行时动态更改下载路径

dh.purvi:

我的确有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();
    }
}
samabcde:

假设您要为每种测试方法指定下载文件夹。

  1. downloadPathinitialization添加in的参数TestBaseClass
  2. downloadPathsetup添加参数ANA_TC16_RiskAnalysisNewTest,删除@BerforMethod注释并更新每个测试方法以setup期望的方式调用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();
        ...
    }
    ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章