面对浏览器中文件上传的问题,它在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"/>
答案 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#中。如果它能解决您的问题,请告诉我。