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

时间:2015-02-17 10:27:02

标签: selenium selenium-webdriver

不确定如何使用sendkeys上传文件。有人提供某种示例脚本,可以在此网址上传图片" http://elance.wetwaresoft.com/account/register"

所以我可以参考。

3 个答案:

答案 0 :(得分:1)

您应该使用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

,则相当容易

答案 1 :(得分:0)

Selenium不会控制基于窗口的元素。所以,为了处理这个文件上传方案,我建议去AutoIT。它是Windows操作系统的关键模拟器。

如果您不熟悉AutoIT,请使用此链接进行基本了解。

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

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

行。现在假设你知道AutoIT是如何工作的,按照下面提到的步骤为文件uplaod创建autoIT文件,它将在Windows操作系统上使用firefox浏览器上传图像。

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

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

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

睡眠(2000)

$ deskpath =" E:\ image.jpg"

发送($ deskpath);

睡眠(2000)

发送(" {TAB}&#34)

发送(" {TAB}&#34)

睡眠(2000)

发送(" {ENTER}&#34)

2)编译脚本(工具>编译),它将生成" ImageUpload.exe "档案给你。

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

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

//这将点击选择图像按钮

driver.findelement(By.id(" ProfilePic&#34))点击();

//将您的自动文件放在项目文件夹

中 。

调用Runtime.getRuntime()EXEC(" \ ImageUpload.exe&#34);

4)那就是:)让我知道是否需要任何进一步的帮助。

(如果这个答案有帮助,请不要忘记投票)

答案 2 :(得分:0)

您可以通过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;
相关问题