使用 Sendkeys 上传文件的示例脚本

Sample Script for Upload file using Sendkeys

不确定如何使用 sendkeys.Can 上传文件有人提供了某种示例脚本,它将在此 URL“http://elance.wetwaresoft.com/account/register

中上传图像

所以我可以参考。

您应该使用 SendKeys() 来完成此操作。我提供了一个示例代码块供您了解如何完成此操作。

By byCss = By.CssSelector("[id='ProfilePic'][type='file']");
String filePath = "my\file\with.extension";
IWebElement element = new WebDriverWait(_driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists(byCss));
element.SendKeys(filePath);

注意:用 C# 编写,如果您使用 Java

会相当简单

Selenium 不会控制基于 windows 的元素。因此,为了处理这种文件上传场景,我建议使用 AutoIT。它是 windows OS 的击键模拟器。

如果您是 AutoIT 的新手,请使用此 link 以获得基本的了解。

AutoIT 下载 Link :- https://www.autoitscript.com/site/autoit/downloads/

AutoIT 教程 Link :- https://www.autoitscript.com/autoit3/docs/tutorials/notepad/notepad.htm

好的。现在假设您知道 AutoIT 是如何工作的,请按照下面提到的步骤为文件上传创建 autoIT 文件,这将在 Windows OS.

上使用 firefox 浏览器上传图像

1) 在 AutoIT 编辑器中使用以下脚本并将文件保存为名称“ImageUpload.au3”并将其保存在项目根文件夹中。

WinWait([标题:文件上传]", "", 130)

WinActivate("[标题:文件上传]")

睡觉(2000)

$deskpath = "E:\image.jpg"

发送($deskpath);

睡觉(2000)

发送("{TAB}")

发送("{TAB}")

睡觉(2000)

发送("{ENTER}")

2) 编译脚本(工具>编译),它会为你生成“ImageUpload.exe”文件。

3) 现在我们必须在点击文件上传按钮后调用并执行 autoIT 文件。该代码看起来类似于下面提到的代码。

/* 你的 JAVA 代码在这里 */

// 这将点击 Select 图片按钮

driver.findelement(By.id("ProfilePic")).click();

// 将你的autoit文件放在项目文件夹中

Runtime.getRuntime().exec(".\ImageUpload.exe");

4) 就是这样 :) 如果需要任何进一步的帮助,请告诉我。

(如果这个回答对您有帮助,别忘了投上一票)

您可以先点击 selenium 的上传按钮,然后调用下面提到的函数并在字符串中传递绝对路径

public void uplaodFile(String path) throws AWTException, InterruptedException
{
    Thread.sleep(5000);
    Robot rb=new Robot();

    //Get file path
    StringSelection stringSelection = new StringSelection(path);
    //Copy Path on Clipboard
    Toolkit.getDefaultToolkit().getSystemClipboard()
    .setContents(stringSelection, null);
    //Paste Clipboard Data
    rb.keyPress(KeyEvent.VK_CONTROL);
    rb.keyPress(KeyEvent.VK_V);
    rb.keyRelease(KeyEvent.VK_V);
    rb.keyRelease(KeyEvent.VK_CONTROL);
    rb.keyPress(KeyEvent.VK_ENTER);
      rb.keyRelease(KeyEvent.VK_ENTER); 

}

请确保也导入这些

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;