Có cách nào để tải lên tệp trong Google Chrome vì Selenium RC "attach_file" chỉ hỗ trợ * Firefox không? Bất kỳ đề nghị hoặc cách giải quyết được nhiều đánh giá cao.Selenium: Tải tệp lên Google Chrome
Trả lời
Tệp tải lên thường là yêu cầu POST, vì vậy bạn thực sự có thể tải lên tệp mà không cần sử dụng Selenium; Trừ khi trang web của bạn yêu cầu các tập tin cookie, thì bạn cần phải xây dựng lại cookie với webdriver.get_cookies() đầu tiên
Một ví dụ đơn giản:
# 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()
Nếu bạn đang sử dụng Webdriver sau đó tải lên tập tin tất cả các bạn cần là sử dụng " sendKeys "để nhập đường dẫn tệp. Bạn cần phải 'bỏ qua' phần nhấp vào nút duyệt để mở hộp thoại để chọn tệp. Một phiên bản Java làm việc cho tôi trông giống như dưới đây,
WebElement inputFilePath = driver.findElement(By.id("filepath"));
inputFilePath.sendKeys("/absolute/path/to/my/local/file");
lẽ cũng đáng chú ý là bằng cách sử dụng sendKeys để tải lên một tập tin sẽ chỉ làm việc với một Ardesco
Sử dụng IJavaScriptExecutor là thay đổi lĩnh vực đầu vào tải lên nhấp thể lái xe nên chrome sẽ không lỗi nói rằng yếu tố này là không nhấp được pop-up.
[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");
}
Mã mà không có ngữ cảnh là vô nghĩa. Bạn chưa giải thích tại sao bạn đang sử dụng Trình thực thi JavaScript để đặt phần tử hiển thị và IMHO. ngăn cản bạn tương tác với các phần tử ẩn vì đó là điều mà người dùng cuối không thể làm. avaScript để buộc phần tử hiển thị bạn nên thực tế làm những gì người dùng cuối sẽ làm để làm cho phần tử hiển thị. – Ardesco
Bạn cũng sử dụng một Thread.sleep mà là một lần nữa thực hành xấu, điều chính xác để làm sẽ là sử dụng một đối tượng WebDriverWait và lớp ExpectedConditions để chờ đợi cho các yếu tố để trở thành có thể nhìn thấy. Đây là một ví dụ kém chất lượng không có lời giải thích và thực hành mã xấu -1 – Ardesco
- 1. Cách tải xuống nhiều tệp trên Chrome bằng Capybara/Selenium?
- 2. Tải Chrome để khởi chạy qua Selenium
- 3. Làm thế nào để bạn tải lên một tệp bằng cách sử dụng Selenium IDE?
- 4. Tải lên tệp pdf trong tài liệu google
- 5. Tải lên tệp của Google App Engine và Amazon S3
- 6. Google App Engine (Python) - Tải lên tệp (hình ảnh)
- 7. Cách tải tệp lên Google Drive bằng tập lệnh Python?
- 8. Tải lên tệp lớn của Google App Engine
- 9. Tải lên tệp Blueimp: một tệp tải lên
- 10. Tệp WebClient.UploadFile tải lên tệp tải lên dưới dạng dòng
- 11. Tránh tải lại tiện ích Google Chrome
- 12. Hủy tải lên Google Drive có thể?
- 13. Tải kích thước tệp tải lên trước khi tải lên
- 14. Tệp tải lên PHP
- 15. Tải tệp lên Skydrive
- 16. Tải lên tệp Javascript
- 17. Tải lên tệp lớn
- 18. TIdHTTPServer tải lên tệp
- 19. tải lên tệp wcf
- 20. Tải tệp lên SFTP
- 21. Tải lên tệp Ajax
- 22. Tải lên tệp Resumable
- 23. Tải tệp lên ftp
- 24. Loại Mime cho tệp zip trong Google Chrome
- 25. Cách xử lý cửa sổ tải lên tệp windows khi sử dụng selenium
- 26. Cách tải lên tệp bằng cách sử dụng Selenium WebDriver trong Java
- 27. Trình quản trị web selenium tải tệp lên trình duyệt như thế nào?
- 28. Tải lên tệp từ xa trên Selenium WebDriver bằng cách sử dụng PHP
- 29. Đang tải lên Dropbox từ Google Drive
- 30. Tải lên tệp lớn lên asp.net MVC
[Tôi đăng một câu trả lời bằng python đây.] [1] [1]: http://stackoverflow.com/a/11872608/471376 – JamesThomasMoon1979