使用 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;
不确定如何使用 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;