我们如何从网站上传文件?

时间:2017-03-24 06:58:50

标签: java selenium-webdriver file-upload

请您告诉我如何将一个pdf从我的系统上传到网站。以下是我的代码示例,但它不起作用:

Driver.get("https://www.pdfunlock.com/");
Driver.manage().timeouts().implicitlyWait(1,TimeUnit.MINUTES);
Driver.findElement(By.id("fromComputer")).click();
Driver.findElement(By.id("Open")).click();
WebElement = Driver.find_element_by_id("fileUpload")
element.send_keys("C:\myfile.txt")

请帮忙。

Thankiew。

4 个答案:

答案 0 :(得分:1)

Selenium WebDriver仅在浏览器DOM窗口上运行。当您尝试上传文件时,您打算自动执行窗口级别流程,这对于selenium来说是超出范围的。简而言之,您不能以任何形式使用selenium来上传文件。

但是......您可以使用Java的 Robot API或使用 AutoIT脚本来实现。

请访问此链接以了解有关AutoIt的更多信息,以及使用它进行文件上传。 http://toolsqa.com/selenium-webdriver/autoit-selenium-webdriver/

要在Java代码中使用已编译的AuoIT脚本,只需使用此

即可
var provider = new firebase.auth.GoogleAuthProvider();
provider.setCustomParameters({prompt: 'select_account'});
firebase.auth().signInWithPopup(provider);

答案 1 :(得分:0)

使用Robot API与Windows弹出窗口或浏览窗口进行交互。 Selenium将无法与Windows文件浏览器交互。

通过此快速浏览:

Reference Link

我假设您无法上传,因为您需要浏览到您的本地位置才能上传到您的网站

答案 2 :(得分:0)

尝试这个(只有这样做的缺点是你必须在打开的浏览器打开对话框上运行此代码,即此代码不会在后台运行):

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Lists {

    public static void main(String[] args) throws AWTException {

        System.setProperty("webdriver.chrome.driver", "C:\\SeleniumDriver\\chromedriver_win32\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();

        driver.manage().window().maximize();
        driver.get("https://www.pdfunlock.com/");

        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

        driver.findElement(By.xpath("//*[@id='fromComputer']")).click();

        String filePath = "C:\\Users\\kushal bhalaik\\Desktop\\1.pdf";
        StringSelection stringSelection = new StringSelection(filePath);
        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        clipboard.setContents(stringSelection, stringSelection);

        Robot robot = new Robot();



        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyRelease(KeyEvent.VK_V);

        robot.keyPress(KeyEvent.VK_TAB);
        robot.keyRelease(KeyEvent.VK_TAB);
        robot.keyPress(KeyEvent.VK_TAB);
        robot.keyRelease(KeyEvent.VK_TAB);
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER); 


    }

}

答案 3 :(得分:-1)

如果您使用的是java,可以使用以下代码(Robot API)将文件上传到网站。

${aspnet-request:serverVariable=REMOTE_ADDR}