2017-09-21 1 views
1

bitte helfen Sie mir. Ich möchte einen neuen Ordner erstellen und dort Screenshots von Selen speichern.Wie erstellt man einen Ordner und speichert Screenshots darin

Ich möchte, wenn ich auf die Schaltfläche xxx_1, Ordner wird automatisch mit Text, den ich in txt_Box1 und aktuellen Datum eingeben. Ordner sollte so aussieht sein:

Test_test2_18_test3-test4_test5_test_11-Jul-2017

Hier ist mein Code

private void xxx_1(object sender, EventArgs e) 
{ 
    string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 
      + "C:/xxx/xxx" + "_" + textBox1 + "_" + "xxx_xxx_xx_" + DateTime.Now; 

    if (!Directory.Exists(path)) 
    { 
     Directory.CreateDirectory(path); 
    } 

    //string path = @"C:\\xxx\xxx" + "_" + textBox1 + "_" + "xxx_xxx_xxx_" + DateTime.Now; 

    String xxx= "https://xxx.xxx.xxx"; 

    IWebDriver driver_xx = new ChromeDriver(); 
    driver_xx.Navigate().GoToUrl(xxx); 
    driver_xx.FindElement(By.Id("xxx")).SendKeys("xxx"); 
    driver_xx.FindElement(By.Id("xx")).SendKeys("xxx"); 
    driver_xx.FindElement(By.Id("xx")).Click(); 
    Thread.Sleep(3000); 

    Screenshot ss_xx = ((ITakesScreenshot)driver_xx).GetScreenshot(); 
    ss_xx.SaveAsFile("How to save the screenshots in new created folder??", OpenQA.Selenium.ScreenshotImageFormat.Jpeg); 
} 
+0

Was ist der Wert von 'Pfad', wenn Sie debuggen? Um die Datei zu speichern ist es nicht so etwas wie 'ss_xx.SaveAsFile (Path.Combine (Pfad, Dateiname), OpenQA.Selenium.ScreenshotImageFormat.Jpeg);'? – Equalsk

+0

10 Es funktioniert, wenn ich diesen Code verwenden Zeichenfolge Pfad = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData) + "\\ xxx"; Directory.CreateDirectory (Pfad); Screenshot ss_xxx = ((ITakesScreenshot) driver_xxx) .GetScreenshot(); ss_xxx.SaveAsFile (Path.Combine (Pfad, "xxx_environment_version.Jpeg"), OpenQA.Selenium.ScreenshotImageFormat.Jpeg); driver_xxx.Close(); Der Ordner erstellt in appdata/roaming, aber ich möchte, dass dieser Ordner auf C: \\ oder Desktop mit dem Text erstellt wird // string path = @ "C: \\ xxx \ xxx" + "_" + textBox1 + "_ "+" xxx_xxx_xxx_ "+ DateTime.Now; – Tomasz

+0

Ich bin verwirrt, Sie wollen es auf dem Desktop, aber den Ordner Anwendungsdaten holen, warum nicht einfach den Desktop-Ordner dann! – Equalsk

Antwort

2

Sie nicht von einer DateTime in Ihrem path wie das als Standard-Implementierung verwenden können .ToString() auf einem DateTime wird ungültige Zeichen enthalten. Verwenden Sie einen Formatbezeichner:

string path = Path.Combine(
        Environment.GetFolderPath(Environment.SpecialFolder.Desktop), 
        "xx\\xx", 
        textBox1.Text, 
        "xx_xxx_xxx_", 
        DateTime.Now.ToString("dd-MM-yyyy HH-mm-ss") // This will show '21-09-2017 16-11-15' 
       ); 

Directory.CreateDirectory(path); 

Seien Sie vorsichtig, wenn textBox1.Text ungültigen Pfad Zeichen wie < > : enthält dann werden Sie eine weitere Ausnahme erhalten.

+0

Vielen Dank! Es funktioniert ! – Tomasz

Verwandte Themen