在 firefox 中使用 webdriver 上传文件时出错

问题描述 投票:0回答:5

要在此 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
java selenium-webdriver selenium-firefoxdriver
5个回答
0
投票

使用 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");

请找到输出图像:Output Upload


0
投票

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

来自

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

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

希望这有效


0
投票

xpath
更改为下面的并尝试。这对我有用。

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

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


0
投票

其实是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");

0
投票

我最近遇到了类似的问题,对我来说,事实证明 Firefox 不喜欢在路径中包含正斜杠。它需要反斜杠。

即它因

"D:/roboraid.jpg"
失败,但与
"D:\\roboraid.jpg"

一起工作
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.