Webdriver でファイル アップロード ボックスを操作する方法はありますか? パスが入力されるフォーム フィールドは読み取り専用なので、書き込みはできません。
47140 次
7 に答える
21
JavaScriptを挿入せずにこれを行うことができます。フォームフィールドを取得して入力するだけです。(Ruby APIを使用して)次のようなもの:
driver.find_element(:id, 'upload').send_keys('/foo/bar')
于 2010-07-23T16:39:08.597 に答える
11
JavaScript を使用して、入力フィールドの値を設定できます。フィールドの id がfileName次の例であることを考慮すると、入力の値がファイルに設定されますC:\temp\file.txt。
String script = "document.getElementById('fileName').value='" + "C:\\\\temp\\\\file.txt" + "';";
((IJavaScriptExecutor)driver).ExecuteScript(script);
この例でdriverは、WebDriver インスタンスです。
\JavaScript に 2 つのバックスラッシュを渡す必要があるため、Windows のようなパスには 4 つのバックスラッシュ ( ) を使用する必要があることに注意してください。2 つの追加のスラッシュで両方をエスケープする必要があります。もう 1 つのオプションは、スラッシュ (例: "C:/tmp/file.txt") を使用することであり、これも機能するはずです。
于 2010-07-22T08:40:46.383 に答える
7
C# の場合は動作しますが、代わりにファイル パスでSendKeys()使用する必要があります。\/
たとえば、次のように動作します。
string filePath = @"drive:\path\filename.filextension";
driver.FindElement(By.Id("fileInput")).SendKeys(filePath);
しかし、以下は機能しません:
string filePath = "drive:/path/filename.filextension";
driver.FindElement(By.Id("fileInput")).SendKeys(filePath);
于 2015-07-20T14:07:58.180 に答える
-1
以下を使用できます(ruby API)
@driver.find_element(:xpath, "html/body/div[1]/div[2]/div[1]/form/div[4]/div[7]/table/tbody/tr[1]/td[2]/input").send_keys "C:\\Users\\Public\\Pictures\\Sample Pictures\\Chrysanthemum.jpg"
これは、画像をアップロードするのに役立ちました。
于 2012-08-28T05:49:37.877 に答える