>我有一个场景,在网页中上传一个文件,该文件有一个浏览按钮,然后单击此浏览按钮,会出现窗口浏览窗口。我选择文件并单击窗口中的上传按钮。现在,网页上有一个叠加弹出窗口,用于输入上传文件的名称,然后单击保存按钮。
这无法自动执行,因为在上传之前有一个弹出的覆盖屏幕。 以下是我使用的代码。
WebElement PDFUpload =driver.findElement(By.xpath("(//div[@class='upload-area'])[2]"));
PDFUpload.sendKeys("C:\test\Testuploads\test.pdf");
当选择文件后单击上传后没有覆盖屏幕时,这工作正常。但是,当在网页中实现用于命名上传文件的覆盖时,测试不会运行。也尝试使用机器人类,它仍然无法正常工作(可能是因为我放错了机器人类(。但是离开这种情况,因为我不认为在我正在研究的这种动态网站上使用机器人类是一种很好的做法。谁能帮忙?
此方法用于处理Windows文件上传对话框,该对话框无法使用Selenium处理。请按照以下步骤操作:
- 单击文件上传/选择文件按钮,以便文件将显示上载对话框。
driver.findElement(By.id("uploadbutton")).click;
- 将文件的绝对路径复制到剪贴板
StringSelection ss = new StringSelection("D:/Test/Test1.docx"(; Toolkit.getDefaultToolkit((.getSystemClipboard((.setContent(ss, 空(;
- 将文件的绝对路径粘贴到文件的"文件名"字段中"上载"对话框
//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);
您可以尝试通过自动化代码本身删除覆盖屏幕,然后上传文件。
使用 Javascript 将 css 显示属性设置为 none。
通过网络驱动程序执行JavaScript
argument[0].style.display = "none";
其中参数[0]是引用覆盖屏幕的WebElement。
我知道这种方法是值得商榷的,因为这会修改原始网页,但是,如果要测试的更重要的功能是文件上传,那么它应该没问题。