无法在selenium

时间:2016-03-28 09:46:28

标签: java selenium file-upload selenium-webdriver functional-testing

enter image description here 我试过的那个页面的Java代码

 WebElement element=driver.findElement(By.id("ddlEmailSource"));
        org.openqa.selenium.support.ui.Select se=new org.openqa.selenium.support.ui.Select(element);
        se.selectByValue("ff");
        driver.findElement(By.id("div_btnFileUpload")).sendKeys("C:\Users\Phantom\Documents\1.txt");

错误详情 Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )

该页面的HTML代码

<input title="Click to Select and Upload File" style="position: absolute; margin: 0px; padding: 0px; opacity: 0; top: 20px; left: 21px;" name="MyFile" type="file">

还试过

driver.findElement(By.name("MyFile")).sendKeys("C:\Users\Phantom\Documents\1.txt");

但它也是通过错误详细信息 Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )

尝试

WebElement elementfile= driver.findElement(By.name("datafile"));
    elementfile.sendKeys("C:\Users\Phantom\Documents\1.txt");

附上错误详情

请告诉我该怎么做

5 个答案:

答案 0 :(得分:2)

所以你只需使用\\,你的代码就可以了

WebElement elementfile= driver.findElement(By.name("datafile"));
    elementfile.sendKeys("C:\\Users\\Phantom\\Documents\\1.txt");

答案 1 :(得分:0)

如果您使用的是Windows,请在路径中使用双反斜杠(\\);如果您使用的是linux或mac(//),请使用正斜杠

更好的方法是将文件及其文件夹放在项目中,您也可以使用以下路径: -

./src\\Documents\\1.txt

OR

String testDataFile  = System.getProperty("user.dir"+"\\1.txt");
File src = new File(testDataFile)

user.dir将为您提供项目当前目录的位置

这意味着您的Excel文件应该出现在项目文件夹中。在项目目录中创建一个文件夹,并将该文件粘贴到该文件夹​​中。这样git也会将这些数据推送到您的存储库,并且也将按服务器进行定位。

希望它会对你有所帮助:)。

答案 2 :(得分:0)

enter image description here您好Qa测试PLZ更新您的最后一行代码

driver.findElement(By.id("div_btnFileUpload")).sendKeys("C:\Users\Phantom\Documents\1.txt");

driver.findElement(By.id("div_btnFileUpload")).sendKeys("C:\\Users\\Phantom\\Documents\\1.txt");

这将解决您所面临的问题。另请注意,在Java中使用selenium时总是使用双斜杠“\\”。

更新:

Selenium中的文件上传可以通过两种方式完成:

1. via sikuli or autoit tool (Basically windows automation tool).
2. direct upload when the tag has one attribute **type=file**

在您的情况下,您尝试在按钮上进行文件上传而不是在上 带有 type = file 属性的标记,这就是每次弹出一个窗口的原因 当你运行上面的代码。而是做文件上传,就像下面一样(如截图所示)

driver.findElement(By.name("MyFile")).sendKeys("C:\\Users\\Phantom\\Documents\\1.txt");

或者如果不起作用,则使用

driver.findElement(By.xpath("//*[@id='div_btnFileUpload']/input[2]")).sendKeys("C:\\Users\\Phantom\\Documents\\1.txt");

希望这对你有帮助。

答案 3 :(得分:0)

您可以使用第三方应用程序AutoIt来完成此任务。

您的AutoIt脚本应如下所示

WinWaitActive("Choose File to Upload"); //File Upload is the dialog's title
Send("C:\Users\xxx.xxx\Documents\filename.csv");
Send("{ENTER}");

答案 4 :(得分:0)

@QATesting - 您可以按以下方式更新代码:

它应该起作用,因为它对我有用。并根据您的要求优先考虑您的测试方法。仅举例来说,我在此优先考虑@Test(优先级= 1)。我希望它适合你。

    @Test(priority = 1)
    public void CERTIFICATIONSSCREENUploadCertficationFilesValidation()
            throws InterruptedException, AWTException {

        //Click on File Upload Button
        driver.findElement(By.xpath("//*[@id='certificationFile']")).click();
        Thread.sleep(1000);
        // Set the file name in the clipboard. Also following line of code will search file in your computer so make sure you provide correct file path.

        StringSelection s = new StringSelection("C:\\Doc\\CertificationFile.xls");
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(s, null);
        Thread.sleep(1000);

        Robot robot1 = new Robot();
        robot1.keyPress(KeyEvent.VK_ENTER);
        robot1.keyRelease(KeyEvent.VK_ENTER);
        robot1.keyPress(KeyEvent.VK_CONTROL);
        robot1.keyPress(KeyEvent.VK_V);
        robot1.keyRelease(KeyEvent.VK_V);
        robot1.keyRelease(KeyEvent.VK_CONTROL);
        robot1.keyPress(KeyEvent.VK_ENTER);
        robot1.keyRelease(KeyEvent.VK_ENTER);
        Thread.sleep(1000);
}