3

webdriver を使用して Safari(8.0.8) にファイルをアップロードしようとしています。誰でもそれが可能かどうかを確認できますか? この問題を検索していましたが、明確な情報が見つかりません。

私のテスト環境: Win7 を搭載したローカル PC でテストを実行し、ブラウザーは MAC マシンで実行されている Selenium Grid で開始します (ハブ + ノードは MAC Yosemite 10.10.5 で実行されます)。

まず、MAC に直接ファイルをアップロードしようとします。しかし、それは機能していません。

Browser.Driver.FindElement(By.Id("inputID")).SendKeys("/Users/administrator/Desktop/file.txt");

次に、LocalFileDetetor を使用しようとしましたが、これも機能しません。

driver.FileDetector = new LocalFileDetector();
Browser.Driver.FindElement(By.Id("inputID")).SendKeys("c:\\file.txt");

次に、私は使用しようとします: WebDriverBackedSelenium:

ISelenium safari = new WebDriverBackedSelenium(webDriver, "http://systemname/");
safari.Start();
safari.AttachFile("xpath=//input[@id='inputID']", "e:\\file2.txt");

しかし、それもうまくいきません。スタックトレース:

Selenium.SeleniumException : WebDriver 例外がスローされました ----> OpenQA.Selenium.InvalidElementStateException : 要素をクリアするには、要素をユーザーが編集できる必要があります。(警告: サーバーはスタックトレース情報を提供しませんでした) コマンドの継続時間またはタイムアウト: 7 ミリ秒 ビルド情報: バージョン: '2.47.1'、リビジョン: '411b314'、時間: '2015-07-30 03:03:16'システム情報: ホスト: 'mac.domain.company.com'、ip: '192.168.136.67'、os.name: 'Mac OS X'、os.arch: 'x86_64'、os.version: '10.10.5' , java.version: '1.8.0_51' ドライバー情報: org.openqa.selenium.safari.SafariDriver Capabilities [{browserName=safari, takesScreenshot=true, javascriptEnabled=true, version=8.0.8, cssSelectorsEnabled=true, platform=MAC , secureSsl=true}] セッション ID: null

Safari であるため、またはグリッド/サファリ/リモート ホストまたはファイル パス (/ のあるもの) に問題があるために機能しませんか?

4

3 に答える 3

0

サポートされていないようですhttps://github.com/seleniumhq/selenium-google-code-issue-archive/issues/4220

于 2016-08-23T20:56:10.267 に答える
0

OSAScript を使用してアップロードできます。次のことを行ってください。

  1. 以下のコードを使用して、Mac で .scpt ファイルを作成します。 activate application "Safari" tell application "Safari" tell document 1 do JavaScript "document.getElementsByTagName('label')[0].click()" delay 2 end tell end tell tell application "System Events" keystroke "G" using {command down, shift down} delay 2 keystroke "/Users/melamc/Downloads/upload.jpeg" delay 2 keystroke return delay 2 keystroke return delay 2 end tell
  2. 必要なときにいつでもこのファイルをトリガーします (このファイルをプログラムで実行するコードを記述します)

これがあなたの助けになることを願っています、試して私に知らせてください

于 2016-11-18T10:29:06.307 に答える