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にあり、同じIDと同じ値でフォームが異なる2つのブラウズボタンがあります。同じ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

属性が等しい2つのボタンがある場合は、アクセスしやすいように名前を変更するか(たとえば、一意の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

こんにちはiam初心者のとき私も同じ問題を見つけました誰かがあなたがウィンドウズコントロールを扱うことができないと私に言ったのでautoitのようなサードパーティのアプリケーションを使ってください、iamは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 に答える