要在此 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 和显式等待尝试此代码:
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");
尝试替换文件位置中的空格
来自
C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg
到
C:\Users\Public\Pictures\Sample_Pictures\Chrysanthemum.jpg
希望这有效
将
xpath
更改为下面的并尝试。这对我有用。
//input[@name='profile_pic_10' and @type='file']
我可以知道您尝试过的浏览器和环境详细信息吗?
其实是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");
我最近遇到了类似的问题,对我来说,事实证明 Firefox 不喜欢在路径中包含正斜杠。它需要反斜杠。
即它因
"D:/roboraid.jpg"
失败,但与 "D:\\roboraid.jpg"
一起工作