【问题标题】:Error on uploading file using webdriver in firefox在 Firefox 中使用 webdriver 上传文件时出错
【发布时间】:2017-09-08 10:27:17
【问题描述】:

要在此 URL 中的字段上上传图像:http://demoqa.com/registration/ 我使用了以下适用于 chrome 但不适用于 Firefox 的代码。请问一下原因和解决方法?

 WebDriver driver;
        System.setProperty("webdriver.gecko.driver","C:\\Users\\abc\\Desktop\\Selenium\\geckodriver-v0.17.0-win64\\geckodriver.exe");
       driver = new FirefoxDriver();
        driver.get("http://demoqa.com/registration/");

WebElement elementUpload=driver.findElement(By.xpath("//*[@id='profile_pic_10']"));
WebDriverWait wait=new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.elementToBeClickable(elementUpload));

elementUpload.sendKeys("D:\\roboraid.jpg");

这里显示的错误是:

Exception in thread "main" org.openqa.selenium.InvalidArgumentException: File not found: C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg

【问题讨论】:

  • xpath 不正确:ty this //*[@id='profile_pic_10'],也可能是您的文件不存在
  • 我从它的属性中获取了文件路径,所以这不会是错误的
  • 所以是文件放置的问题,你在错误日志中找不到错误文件,可以给你我输出的快照
  • 是的,你可以
  • 还将文件夹名称改为samplespace

标签: java selenium-webdriver selenium-firefoxdriver


【解决方案1】:

使用带有显式等待的 xpath 尝试此代码:

WebDriver   driver = new FirefoxDriver();
driver.get("http://demoqa.com/registration/");
driver.manage().window().maximize();
WebElement elementUpload=driver.findElement(By.xpath("//*[@id='profile_pic_10']"));
WebDriverWait wait=new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.elementToBeClickable(elementUpload));

elementUpload.sendKeys("D:\\1504857398686.png");

请找到输出图片:

【讨论】:

【解决方案2】:

尝试替换文件位置中的空格

来自

  C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg 

 C:\Users\Public\Pictures\Sample_Pictures\Chrysanthemum.jpg

希望这可行

【讨论】:

    【解决方案3】:

    xpath改成下面的试试。它对我有用。

     //input[@name='profile_pic_10' and @type='file'] 
    

    我可以知道您尝试过的浏览器和环境详细信息吗?

    【讨论】:

    • FF 版本 55.0.3 硒版本 3.5.3
    【解决方案4】:

    其实是firefox的geckodriver的问题

    参考:-

    https://github.com/mozilla/geckodriver/issues/659

    你需要更新你的 geckodriver

    如下使用chromedriver

            System.setProperty("webdriver.chrome.driver", "D:\\Workspace\\StackOverlow\\src\\lib\\chromedriver.exe");
            WebDriver driver = new ChromeDriver( );
            driver.get("http://demoqa.com/registration/");
            driver.manage().window().maximize();
            ((JavascriptExecutor) driver).executeScript("scroll(0,300)");
            WebElement elementUpload=driver.findElement(By.xpath("//*[@id='profile_pic_10']"));
            WebDriverWait wait=new WebDriverWait(driver, 30);
            wait.until(ExpectedConditions.elementToBeClickable(elementUpload));
            elementUpload.sendKeys("D:"+File.separator+"22.jpeg");
    

    【讨论】:

    • 此问题与最新 ff 浏览器的 geckodriver 有关。我也与 3.5/3.4 和 55 ff 以及 gecko 1.8 一样。而相同的代码正在使用 chrome
    • 您使用的是什么操作系统?
    • 壁虎版? .. 我正在使用 0.18 .. 我在 win 10
    • 壁虎v0.18.0
    猜你喜欢
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2017-10-09
    • 2018-04-24
    相关资源
    最近更新 更多