Upload file với Selenium trong WPF
Khóa học Selenium cơ bản đến nâng cao

Danh sách bài học
Upload file với Selenium trong WPF
Dẫn nhập
Trong bài trước Kteam đã giới thiệu đến bạn cách CHANGE FRAME TRONG SELENIUM.
Ở bài này, Kteam sẽ giới thiệu tới bạn cách Upload file với Selenium trong WPF.
Nội dung
Để đọc hiểu bài này tốt nhất bạn cần:
- Cài đặt sẵn VISUAL STUDIO 2015 hoặc 2017 community
- Xem qua bài TỔNG QUAN VỀ SELENIUM.
- Có kiến thức về C# CƠ BẢN, LẬP TRÌNH OOP trong C#, và LẬP TRÌNH WPF.
- Có kiến thức HTML cơ bản.
- Có kiến thức cơ bản về JavaScript.
Trong bài này, chúng ta sẽ cùng tìm hiểu những nội dung sau đây:
- Cách upload file trong Selenium.
Cách Upload file trong Selenium
Để upload file trong Selenium chúng ta cần dùng thư viện hỗ trợ đó là AutoIT. Bản chất Selenium không thể điều khiển cái gì nằm ngoài WebBrower. Còn AutoIT thì lại chuyên dùng để làm auto game, tool, auto app. Và đặc biệt nữa là thư viện này có thư viện hỗ trợ cho C#.
Mình thử demo tại web Secufiles.com vì tìm thử thấy nó khá dễ để demo.
Để upload file ở website này tại thời điểm này thì chỉ cần 3 bước:
Bước 1: Nhấn vào chữ Upload File to bự giữa web.
Bước 2: Nhấn vào khung hiện ra sau khi làm bước 1.
Bước 3: Chọn file cần upload và nhấn Enter.
Ở bước 3, chúng ta hoàn toàn có thể paste đường dẫn file vào và nhấn Enter không cần chọn file. OpenFileDialog tự biết tìm tới đường dẫn bạn dán vào để lấy file tương ứng. Và Enter là phím mặc định cho việc upload. Lợi dụng việc này, chúng ta sẽ nhờ Selenium đi hết bước 2 và AutoIT thực hiện bước 3.
Chúng ta cần Import thư viện AutoIT vào project. Bạn có thể dùng thư viện đính kèm. Hoặc cài AutoIT trước đó rồi lấy thư viện mà dùng.
Lưu ý: Nếu có lỗi thì thử note sau
- Unlock file AutoITX3 (nhấp phải chọn Properties > Unlock > Ok)
- Theo các step này:
- After download completes, Copy & paste it in c:\autoit\PASTE HERE (c:\autoit\AutoItX3.dll)
- Open Command Prompt as an Adminstrator
- In Command Prompt > cd c:\windows\systems32 [Press Enter]
- c:\windows\systems32 > regsvr32 c:\autoit\AutoItX3.dll [Press Enter]
- Prompt will appear with message “registration Succeeded”
Chúng ta sẽ Import 2 file AutoITX3.dll và AutoItX3.Assembly.dll.
Sau đó, dùng đoạn code mẫu này để thực hiện upload file. File data mình để sẵn trong thư mục Debug của Project mẫu. Các bạn có thể tải về chạy thử nhé!
// khởi tạo WebDriver
FirefoxDriver firefoxDriver = new FirefoxDriver();
// chuyển trang đến website secufiles.com tìm đại ở google và thấy khá dễ demo
firefoxDriver.Url = "https://secufiles.com/";
firefoxDriver.Navigate();
// Nhấn vào nút upload
var upload1 = firefoxDriver.FindElementByXPath("/html/body/section[1]/div/div/ul/li/div[4]/a");
// click vào nó để hiện khung drag and drop upload 2
upload1.Click();
var upload2 = firefoxDriver.FindElementById("initialUploadSection");
// click vào nó để hiẹn dialog chọn file
upload2.Click();
Thread.Sleep(TimeSpan.FromSeconds(3));
// khởi tạo đối tượng autoIT để dùng cho C# -> nhờ nó send key click chuột dùm cái ở ngoài web browser
AutoItX3 autoIT = new AutoItX3();
// đưa title của cửa sổ File upload vào chuỗi.
// Cửa sổ hiện ra có thể có tiêu đề là File Upload hoặc Tải lên một tập tin
// lấy ra cửa sổ active có tiêu đề như dưới
autoIT.WinActivate("File Upload");
// file data nằm trong thư mục debug
// gửi link vào ô đường dẫn
autoIT.Send(Application.Current.StartupUri + "//Kteam Data Upload.txt");
Thread.Sleep(TimeSpan.FromSeconds(1));
// gửi phím enter sau khi truyền link vào
autoIT.Send("{ENTER}");
Các bạn tự mình chạy và xem kết quả nhé!
Kết luận
Qua bài này, các bạn đã biết cách Upload file trong Selenium như thế nào.
Qua serial Selenium cơ bản đến nâng cao này, hy vọng đã giúp các bạn phần nào trong việc tạo những tool tự động cho các Website. Hãy chia sẻ & ủng hộ các CHIẾN DỊCH khác tại trang yêu cầu của HowKteam.com
Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó!”
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Upload file với Selenium trong WPF dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Nội dung bài viết
Tác giả/Dịch giả

Nhà sáng lập Howkteam.com, KQuiz.vn & tác giả các khóa học C#, Auto, Unity3D, Python....
Với mong muốn mang đến kiến thức chất lượng, miễn phí cho mọi người, với tâm huyết phá bỏ rào cản kiến thức từ việc giáo dục thu phí. Tôi đã cùng đội ngũ Kteam đã lập nên trang website này để thế giới phẳng hơn.
Hãy cùng chúng tôi lan tỏa kiến thức đến cộng đồng!
Khóa học
Khóa học Selenium cơ bản đến nâng cao
Serial này dành cho các bạn muốn học, tìm hiểu về lập trình tools (chương trình tự động) tạo account google, facebook, tools tự động offer, tool tự động mua coin ICO, và nhiều tool tự động khác tùy theo nhu cầu riêng.
Về mặt cơ bản, cấu trúc selenium rất đơn giản nên những người không rành code cũng có thể thao tác. Tuy nhiên để tạo ra các sản phẩm hoàn chỉnh, có chức năng ổn thì cần kiến thức lập trình cơ bản, HTML, CSS và JavaScript…
Trong khóa học này Kteam sẽ giới thiệu đến các bạn một công cụ mạnh mẽ giúp bạn tạo ra các Script tự động thao tác với Web browers – Đó chính là Selenium
Thông qua khóa học LẬP TRÌNH SELENIUM, Kteam sẽ hướng dẫn các bạn những thao tác cơ bản với Selenium. Bạn hoàn toàn có thể kết hợp Selenium và các code C#, Java, Python hay ngôn ngữ lập trình khác mà Selenium có thư viện hỗ trợ, để tạo ra một tổ hợp thao tác kinh khủng khiếp cho tool của bạn.
AutoIt lỗi lòi tòi phòi, các bạn dùng thư viện KAutoHelper được share trong loạt bài điều khiển PC là ổn áp nhất
Mình muốn tìm hiểu cách mà lấy thông tin email trên 1 file notepad rồi đăng nhập vào. Admin có thể gợi ý cách giải quyết được không. Cảm ơn
Mất 3 tiếng để mình cài và sử dụng được thư viện AutoIT. Bạn nào cần thì tham khảo bên dưới:
- Cài thư viện AutoIT và cách sửa lỗi (nếu có):
+ Tải AutoItX3.dll: https://www.dll-files.com/autoitx3.dll.html
hoặc link: http://www.dll-found.com/autoitx3.dll_download.html
+ Tải 2 file cài đặt 'Autoit' như trong link hướng dẫn: https://www.guru99.com/use-autoit-selenium.html
+ Cài đặt 2 file đó, cứ bấm Next liên tục ==> Ok!
1. Unblock file AutoITX3.dll (nhấp phải chọn Properties > Unblock > Ok)
2. Thực hiện các thao tác sau:
+ Copy & paste it in C:\Program Files (x86)\AutoIt3 (C:\Program Files (x86)\AutoIt3\AutoItX3.dll)
+ Open Command Prompt as an Adminstrator (bấm Search góc dưới window > gõ cmd > chuột phải Adminstrator)
+ Trong Command Prompt gõ: cd C:\Windows\System32 [Press Enter]
+ Gõ: regsvr32 "C:\Program Files (x86)\AutoIt3\AutoItX\AutoItX3.dll" [Press Enter]
+ Prompt will appear with message “registration Succeeded”
+ Mục Solution Explorer > Dependencies > Chuột phải chọn "Add Project Reference" > Browse.. >
Mở đường dẫn: C:\Program Files (x86)\AutoIt3\AutoItX
Import 2 file: AutoITX3.dll và AutoItX3.Assembly.dll
+ Copy 3 dòng code bên dưới và chạy thử:
// khởi tạo đối tượng autoIT để dùng cho C# -> nhờ nó Sendkeys click chuột ở ngoài web browser
AutoItX3 autoIT = new AutoItX3();
// lấy ra cửa sổ active có tiêu đề góc trên bên trai của cửa sổ UPLOAD 'tùy vào mỗi loại máy sẽ có tên khác nhau' như upload SHopee thì là 'Open'
autoIT.WinActivate("Open");
// gửi link vào ô đường dẫn
autoIT.Send(AppDomain.CurrentDomain.BaseDirectory + "C:\\Users\\Asus-PC\\Downloads\\300sanpham\\100\\phone-1620562424844.png");
+ Nếu bị lỗi bên dưới:
"System.Runtime.InteropServices.COMException
HResult=0x80040154
Message=Retrieving the COM class factory for component with CLSID {1A671297-FA74-4422-80FA-6C5D8CE4DE04} failed due to the following error: 80040154 Class not registered (0x80040154 (REGDB_E_CLASSNOTREG))............................................................"
*Bật regedit (window + r > gõ regedit) HKEY_CLASSES_ROOT\CLSID\{1A671297-FA74-4422-80FA-6C5D8CE4DE04}. <== Địa chỉ giống như bên trên Ô Thông báo lỗi!
If your running a 32-bit app on a 64 bit OS, look for HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{877AA945-1CB2-411C-ACD7-C70B1F9E2E32}
*Nếu không có, thì bạn chưa Register AutoITX3.dll hoặc, có thể cài rồi mà vẫn bị, thì sẽ xảy ra một số lỗi khác. Và cách sửa hiệu quả nhất là chuyển "Default Processor Architecture" to x86, như bên dưới:
1. Chuột phải tên .NET Project của bạn, và chọn Properties
2. Chọn tab 'Buld'
3. Chuyển Platform target sang x86
4. Bật 'Task Manager' và End task hết tất cả chromedriver.exe (64 bit) đang chạy ngầm.
5. Rebuld lại Project ==> Done! Cách này mình làm đã thành công!
Chào bạn.
Nếu mình mở 2 trình duyệt Selenium. Rồi mình upload cả 2 với AutoIT thì cái hộp thoại sẽ bị trùng tên và AutoIt làm thế nào để nhận biết được Up ảnh nào của trình duyệt nào.
VD: trình duyệt A, B đều mở hộp thoại upload file.
file A vào trình duyệt A, file B vào trình duyệt B
Anh ơi không có thư viện Autoitx3 trong project!