我有一种方案,其中在网页中上传具有浏览按钮的文件,然后单击该浏览按钮,将显示Windows浏览窗口。我选择文件,然后单击窗口中的上载按钮。现在,网页上会显示一个叠加层弹出窗口,以输入上传文件的名称,然后点击保存按钮。
这不能自动执行,因为在上传之前有一个弹出式叠加屏幕。 以下是我使用的代码。
WebElement PDFUpload =driver.findElement(By.xpath("(//div[@class='upload-area'])[2]"));
PDFUpload.sendKeys("C:\\test\\Testuploads\\test.pdf");
在选择文件后单击上载后没有覆盖屏幕时,此功能正常。但是当在网页上实现用于命名上传文件的叠加层时,该测试未运行。也尝试过使用机械手类,但仍然无法正常工作(可能是由于我错误地输入了机械手类)。但是,请离开本案例,因为在我正在开发的这种动态网站上,我不认为使用机器人课程是一种好习惯。有人可以帮忙吗?
答案 0 :(得分:0)
此方法用于处理Windows文件上传对话框,该对话框无法使用Selenium处理。请按照以下步骤操作:
driver.findElement(By.id("uploadbutton")).click;
StringSelection ss = new StringSelection(“ D:/Test/Test1.docx”); Toolkit.getDefaultToolkit()。getSystemClipboard()。setContents(ss, null);
//native key strokes for CTRL, V and ENTER keys Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_ENTER); robot.keyRelease(KeyEvent.VK_ENTER);
答案 1 :(得分:0)
您可以尝试通过自动化代码本身删除覆盖屏幕,然后上传文件。
使用JavaScript将css display属性设置为none。
通过网络驱动程序执行javascript
argument[0].style.display = "none";
其中参数[0]是引用覆盖屏幕的WebElement。
我知道这种方法可以修改原始网页,因此值得商bat,但是,如果要测试的更重要的功能是文件上传,那就应该可以了。