selenium webdriver浏览器中的文件上传问题ie10

时间:2015-10-13 05:39:41

标签: java selenium selenium-webdriver automation saucelabs

面对浏览器中文件上传的问题,它在firefox和chrome中运行正常但在ie.Am中使用以下代码

driver.findElement(By.xpath("//html/body/div[1]/div/main/div/form/div[1]/div[1]/ng-form/card/fieldset/div/div[9]/div[2]/div[2]/div/span/ng-form/label/div/span[2]")).sendKeys("/home/FF41/application.ini");

它没有显示任何错误,而不是sendkeys如果我们点击它打开一个新窗口。所以xpath工作正常,但为什么它失败,即使xpath是正确的。

绝对xpath

//html/body/div[1]/div/main/div/form/div[1]/div[1]/ng-form/card/fieldset/div/div[9]/div[2]/div[2]/div/span/ng-form/label/div/span[2]

没有错误,但文件上传未完成。

相对xpath

 //*[@id=\"c0-Attachment-8\"] 

不可见元素异常

HTML代码: -

<input id="c0-Attachment-8" class="targetx-file-input ng-pristine ng-valid ng-touched ng-valid-required" type="file" ng-class="{'ng-touched' : attName !== undefined }" ng-required="fileRequired" ng-disabled="success || attName" onchange="angular.element(this).scope().setFiles(this)" accept="" ng-model="filename" name="c0-Attachment-8"/>

3 个答案:

答案 0 :(得分:1)

当您使用ie10时,很明显您正在使用Windows。

现在,当你提到像linux目录这样的文件路径时,Sendkeys需要文件的绝对路径

你正在使用这样的路径: -

/home/FF41/application.ini

虽然您需要提供类似Windows模式的路径: -

C:\\Users\\Easy\\Desktop\\testfile.txt

请尝试使用

driver.findElement(By.xpath("//html/body/div[1]/div/main/div/form/div[1]/div[1]/ng-form/card/fieldset/div/div[9]/div[2]/div[2]/div/span/ng-form/label/div/span[2]")).sendKeys("C:\\Users\\Easy\\Desktop\\application.ini");

您还需要在上述操作后单击上传按钮

答案 1 :(得分:0)

尝试使用以下xpath:

//input[@id='c0-Attachment-8']

答案 2 :(得分:-1)

另一个最佳选择是使用SendKeys类(在System.windows.form命名空间中) 它可以与任何浏览器一起使用。 您可以使用以下代码:

        drv = new InternetExplorerDriver("path to IE Driver Server exe");
        drv.Navigate().GoToUrl("your URL");
        drv.FindElement(By.XPath("enter your xpath here")).Click();
        Thread.Sleep(5000);
        SendKeys.SendWait("complete file path to upload");
        SendKeys.SendWait("{ENTER}");
        drv.FindElement(By.XPath("submit button xpath")).Click();

此代码位于C#中。如果它能解决您的问题,请告诉我。