Selenium RC「attach_file」はFirefoxをサポートしているので、Google Chromeでファイルをアップロードする方法はありますか?どんな提案や回避策も高く評価されます。Selenium:Google Chromeでファイルをアップロード
答えて
ファイルのアップロードは通常はPOSTリクエストであるため、実際にはSeleniumを使用せずにファイルをアップロードできます。あなたのサイトがクッキーを必要としない限り、あなたは最初webdriver.get_cookies()でクッキーを再構築する必要が
簡単な例:あなたはwebdriverをを使用している場合
# required package:
# http://pypi.python.org/pypi/MultipartPostHandler/0.1.0
import MultipartPostHandler, urllib2, cookielib
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),
MultipartPostHandler.MultipartPostHandler)
path_to_file = r"abc.zip"
open_file = open(path_to_file,"rb")
param = { "file": open_file }
req = opener.open("http://www.yoursite.com/uploadfile", param)
open_file.close()
その後、「あなたが必要とするすべてが使用されたファイルをアップロードしますsendKeys "を使用してファイルパスを入力します。参照ボタンをクリックする部分をスキップしてファイルを選択するダイアログボックスを開く必要があります。私の作品のJavaバージョンはIJavaScriptExecutorがポップアップしません。この要素は、非クリッカブルであるというエラーができるので、クロムのドライバをクリックし、アップロード入力フィールドを変更することで使用して、以下のようになります
WebElement inputFilePath = driver.findElement(By.id("filepath"));
inputFilePath.sendKeys("/absolute/path/to/my/local/file");
もおそらく価値SendKeysを使用してファイルをアップロードすると、 Ardesco
。
[SetUp]
public void SetupTest()
{
driver = new ChromeDriver();
baseURL = "";
verificationErrors = new StringBuilder();
}
[Test]
public void Test()
{
IJavaScriptExecutor js = driver as IJavaScriptExecutor;
IWebElement element = driver.FindElement(By.Id("UploadFile_ButtonID"));
js.ExecuteScript("arguments[0].style.visibility = 'visible'; arguments[0].style.height = '1px'; arguments[0].style.width = '1px'; arguments[0].style.opacity = 1", element);
Thread.Sleep(1000);
element.SendKeys("D:\\path\\test\\image.jpg");
}
コンテキストのみのコードは無意味です。JavaScript Executorを使用して要素を表示する理由を説明していないので、おそらく悪いことです。それはエンドユーザーができないものなので、隠れた要素とやりとりするのを防ぎます。Jを盲目的に使うのではなく要素を可視にするにはavaScriptを使用します。実際には、要素を表示させるためにエンドユーザーが行うべきことを実行する必要があります。 – Ardesco
また、悪い習慣であるThread.sleepも使用してください。正しいことは、WebDriverWaitオブジェクトとExpectedConditionsクラスを使用して要素が可視になるのを待つことです。これは、説明がなく、コードの慣行が悪い、厄介な例です-1 – Ardesco
- 1. Selenium:Google Chromeのオプションと機能
- 2. JSONファイルをChrome経由でFirebaseデータベースにアップロードできません
- 3. バールーム付きのChromeで大量のファイルをアップロードできない
- 4. 高度なレストクライアントを使用したファイルのアップロードGoogle Chrome Api
- 5. Chromeでファイルを50MB以上> SharePoint 2013にアップロードできません
- 6. Google chromeアップロード速度とFirefox
- 7. ドラッグアンドドロップでファイルをアップロード
- 8. azureでファイルをアップロード
- 9. CodeIgniterでファイルをアップロード
- 10. Angular2でファイルをアップロード
- 11. Apacheでファイルをアップロード
- 12. extjs4でファイルをアップロード
- 13. ftpでファイルをアップロード
- 14. シングルページアプリケーションでファイルをアップロード
- 15. Chromeの問題 - AJAX挿入ファイル入力ファイルがアップロードされない
- 16. Chrome Postman WebApiのアップロードをシミュレートする
- 17. PHPファイルのアップロードは、ファイルをアップロード
- 18. PDFファイルをアップロードし、ASP.netでアップロードしたファイルをプレビューするMVC3
- 19. PythonでSeleniumでファイルをアップロード
- 20. Chromeでアップロードした後でローカルファイルを削除できません
- 21. anglejsでファイルignatorでファイルをアップロード
- 22. rails、carrierwave-direct、jqueryファイルのアップロードでクライアント側のs3にファイルをアップロード
- 23. Seleniumでファイルをアップロードする
- 24. React JSでファイルをアップロード
- 25. GAEでJSFファイルをアップロード
- 26. zend - RESTサービスでファイルをアップロード
- 27. POSTでファイルをs3にアップロード
- 28. ファイルをPythonでボトルサーバーにアップロード
- 29. SIM900でサーバーにファイルをアップロード
- 30. WebApiでAngular2ファイルをアップロード
[私はここでのpythonを使って答えを掲載した。] [1] [1]:ことは注目にhttp://stackoverflow.com/a/11872608/471376 – JamesThomasMoon1979