使用 sendKeys 文件上传 selenium

File upload selenium using sendKeys

我的情况是我正在自动测试文件上传功能。现在自动化 ci 在另一个 machine/box 上运行,浏览器在另一台机器上打开以进行自动化测试。我能够在 jar 中打包(添加要上传的测试输入文件)。但是如上所述,jar 在另一台机器上,浏览器在另一台机器上。由于浏览器机器未在自动化运行时固定和拾取,因此我如何才能在浏览器 运行 的机器上获得我需要上传的输入文件。

我试图在从 jar 中提取文件后复制它,但显然它没有从上传的地方复制到浏览器机器中。

甚至可以在浏览器机器中使用该文件吗?

您可以做的一件事是将上传文件放入一个共享文件夹,所有 运行 机器都可以访问该文件夹。并提供共享文件夹中的文件位置。 您可以将 sendKeys 命令发送到上传字段,如下所示

upload_textfield.sendKeys("\shared_Folder\upload.txt")

静态WebDriver驱动; public static void main(String[] args) 抛出 InterruptedException,FindFailed {

    System.setProperty("webdriver.gecko.driver", "E:\doftware\geckodriver-v0.10.0-win64\geckodriver.exe");
    driver =new FirefoxDriver();
    driver.get("https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1");

    driver.findElement(By.id("Email")).sendKeys("emailaddress");
    driver.findElement(By.id("next")).click();
    Thread.sleep(500);
    driver.findElement(By.id("Passwd")).sendKeys("Password");
    driver.findElement(By.id("signIn")).click();
    Thread.sleep(5000);
    driver.findElement(By.xpath("//div[@class='T-I J-J5-Ji T-I-KE L3']")).click();
    Thread.sleep(500);
    driver.findElement(By.xpath("//div[@class='a1 aaA aMZ']")).click();

    org.sikuli.script.Pattern open= new org.sikuli.script.Pattern("C:\Users\narendra\Desktop\test\filename.PNG");
    org.sikuli.script.Pattern open1= new org.sikuli.script.Pattern("C:\Users\narendra\Desktop\test\open.PNG");

    org.sikuli.script.Screen scr= new org.sikuli.script.Screen();
    scr.setAutoWaitTimeout(30);
    scr.type(open, "C:\Users\narendra\Desktop\test\searchButton");
    scr.click(open1);