execute_script - ruby require selenium webdriver



傾きをクリックすると、ファイルの添付ダイアログが開きます (2)

私はセレン2ベータを使っています。 私はファイル添付ダイアログを開くボタンをクリックしようとしています。 しかし、それをクリックすると何も起こりません。

<input class="zf" name="Passport" id="PassportUpload" type="file" onclick="return { oRequired : {} }" maxlength="524288"> 


driver.findElement(By.name("Passport")).click();

ちょうどセレンを使用してセレン2私はそれを簡単にクリックすることができます。

https://ffff65535.com


私は、Internet Explorerを使用している場合にのみ問題が発生すると推測します。IEとFFはファイル入力を少しずつ処理するからです。FFでは、ボタンやフィールドをクリックして開くダイアログを呼び出すことができます。フィールド上でクリックします。

WebDriverはネイティブイベントを使用しているため、入力フィールドのクリックに変換されたFile Inputコントロールにネイティブのマウスクリックを送信しています。

Selenium 1ではJavaScriptを使用してイベントを発生させていたため、これは動作していました。 WebDriverで動作させるには、JavaScriptを呼び出す必要があります:

WebElement upload = driver.findElement(By.name("Passport"));
((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);

しかし、コードabouveはFirefoxではないので、あなたは次のようなものを使うことができます:

WebElement upload = driver.findElement(By.name("Passport"));
if (driver instanceof InternetExplorerDriver) {
    ((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
} else {
    upload.click();
}

おそらく次のコードを試してください:

WebElement upload = driver.findElement(By.name("Passport"));
if (driver instanceof InternetExplorerDriver) {
    ((JavascriptExecutor)driver).executeScript("arguments[0].click();", upload);
} else if (driver instanceof FirefoxDriver) {
 ((JavascriptExecutor)driver).executeScript("arguments[0].click;", upload);
}else {
    upload.click();
}




selenium-webdriver