0

我是 Selenium 的新手,我正在尝试使用 WebDriver 上传文件。在这里,我尝试使用 dom 元素单击浏览按钮,如下所示:

selenium.type("document.forms['UploadForm'].elements['browsebutton']",file.getAbsolutePath());

但由于该方法不起作用,我尝试使用 WebDriver 元素点击浏览按钮,如下所示:如何将我的 dom 元素更改为 xpath 或 css 选择器,如下所示?

driver.findElement(By.cssSelector("input[type=\"file\"]")).click();

我不能把 xpath 写成

selenium.click("xpath="//input[@name='uplaod' and @value='browsebutton']");

因为我有多个具有相同名称和值的浏览按钮。所以我需要选择使用 dom 元素本身。我该怎么做?

提前感谢您的帮助。

Dominik 我尝试使用下面的 xpath,因为没有名称属性:但不工作

String upload="(//input[@name='bulkUnBlockUploadForm' and @value='requestFile'])[2]";
String button="(//input[@name='bulkUnBlockUploadForm' and @value='process'])[2]";

我也尝试使用 id:不工作

   String upload="(//input[@id='content' and @value='requestFile'])[1]";
    String button="(//input[@id='content' and @value='process'])[1]";

问题出在我的 jsp 中,我有 2 个具有相同 id 和相同值但形式不同的浏览按钮。我为每个具有相同 id 和相同值但形式不同的浏览按钮有 2 个提交按钮。所以当我使用上面的方法是同时点击提交按钮

4

3 回答 3

2

这可以上传文件,它对我有用。

public static void main(String[] args) 
{
     WebDriver  driver = new FirefoxDriver();
     driver.get("http://www.freepdfconvert.com/");
     driver.findElement(By.id("UploadedFile")).sendKeys("C:\\Users\\Reputa\\Downloads\\HP1.pdf");        
     try {
            Thread.sleep(4000);
        } catch (Exception e) {}
     driver.findElement(By.name("pdfsubmit")).click();
        }
于 2012-10-29T11:53:48.980 回答
0

如果您有两个具有相同属性的按钮,那么要么重命名它们以便更好地访问(例如通过给它们一个唯一的 id),要么尝试将您的 XPath 语句更改为如下内容:

String uploadButton1 = "(//input[@name='upload' and @value='browsebutton'])[1]";
String uploadButton2 = "(//input[@name='upload' and @value='browsebutton'])[2]";
driver.findElement(By.xpath(uploadButton1)).click();
driver.findElement(By.xpath(uploadButton2)).click();
于 2012-10-25T06:05:30.173 回答
0

嗨,当我是初学者时,我也发现了同样的问题,有人告诉我您无法处理 Windows 控件,因此请使用第三方应用程序,例如 autoit,我正在使用 autoit。

    1. download autoit.
    2. no need of any jars just add Runtime,getruntime().execute('path of exe');in your code
    3.code of file upload is below

Local $hWnd=WinWait("[CLASS:#32770]","",10)
ControlFocus($hWnd,"","Edit1")
Sleep(2000)
ControlSetText($hWnd, "", "Edit1", "path of file to upload")
Sleep(2000)
ControlClick($hWnd, "","Button1");

4 如果您发现查询问我,仍然运行您的 java 应用程序。

于 2015-09-25T10:59:36.653 回答