Xin cách viết dòng code đợi download xong rồi chạy tiếp dòng code kế tiếp

Liên hệ QC

FanRC

Thành viên mới
Tham gia
1/12/06
Bài viết
8
Được thích
-1
Dear mọi người

Khoa đang viết code chạy download dữ liệu trên web, tuy nhiên ý mình muốn là "đợi download file xong rồi mới chạy dòng code kế tiếp". Vậy mình sẽ viết như thế nào. Câu mình đang viết là bot.wait (Now + TimeValue ("0:00:15")) -> đợi 15 giây, nhưng mình muốn viết là đợi download xong thì mới chạy tiếp dòng kế tiếp.

bot.wait (Now + TimeValue ("0:00:15"))
bot.quit

Nhờ anh chị em giúp đỡ vì mình tìm trong topic này không thấy vấn đề này.

Cám ơn mọi người nhiều

Khoa Pham
 
Lần chỉnh sửa cuối:
Mọi người chào Dear nha.

Dear úp file đang làm hoặc toàn bộ (phun không che) code đã làm lên đây nhé.
 
Upvote 0
Hi befaint

Do mình chạy bằng Chrome và web của công ty (dữ liệu nội bộ) nên không tiện chia sẻ, rất xin lỗi bạn. Ý dòng lệnh như bên dưới
Sub
......
bot.FindElementByName ("Download").Click -> nhấn vào nút Download để tải file
bot.Wait (Now + TimeValue ("0:00:15")) -> chờ 15 giây, mình muốn sửa câu này đợi download xong rồi chạy dòng kế tiếp

ý mình là vậy ah

Cám ơn nhiều
 
Upvote 0
Cách 1: Bạn vào javascript của element có name Download lấy link tải rồi tải bằng VBA
Cách 2: viết mã javascript thay vì mã vba rồi dùng phương thức Selenium Execute trong vba để thực thi mã javascript, trong mã javascript bạn phải biết viết promise để chờ tải
 
Upvote 0
Không có lý do nào chính đáng đâu, khỏi cố lý tro lý trấu. Thông tin gì của công ty trong code? Trích TOÀN BỘ code, những chỗ cần bí mật, vd. tên công ty, tên đường dẫn ..., thì thay bằng blala, hichic, ngày mai em đi. Thế thôi.

Tự dưng rút từ trong tay áo ra cái BOT không một lời giải thích, không mô tả là code dùng cách nào, rồi bắt mọi người đoán nó là cái gì. Vớ vẩn.

Muốn sáng kiến? Thì vd. sáng kiến sau: thay Wait bằng
Mã:
t = Timer
Do While Timer - t < 300
    kiểm tra xem tập tin đã xuất hiện ở nơi tải về chưa. Nếu đã có thì Exit Do
Loop
 
Upvote 0
Muốn sáng kiến? Thì vd. sáng kiến sau: thay Wait bằng
Mã:
t = Timer
Do While Timer - t < 300
    kiểm tra xem tập tin đã xuất hiện ở nơi tải về chưa. Nếu đã có thì Exit Do
Loop

Hình như phải xét xem tập tin được bao nhiêu bai nữa.
Tôi thì làm theo kiểu sức trâu (brute force), cứ nghỉ 1 giây (hay vài giây tuỳ theo tốc độ download) rồi xét FileLen (hay Hàm gì đó của FileSystemObject). Nếu hai lần ra số bằng nhau thì coi như download xong. Không hoàn toàn bảo đảm 100% nhưng cũng đạt cho hầu hết các trường hợp.
 
Upvote 0
Hình như phải xét xem tập tin được bao nhiêu bai nữa.
Tôi thì làm theo kiểu sức trâu (brute force), cứ nghỉ 1 giây (hay vài giây tuỳ theo tốc độ download) rồi xét FileLen (hay Hàm gì đó của FileSystemObject). Nếu hai lần ra số bằng nhau thì coi như download xong. Không hoàn toàn bảo đảm 100% nhưng cũng đạt cho hầu hết các trường hợp.
Đây mới chỉ là hướng đi thôi. Vì thế trong Do ... Loop không có code mà chỉ có chú thích. Ngay cả cái 300 kia cũng chỉ là ví dụ.
 
Upvote 0
Ối dời. Ai lại đi download bằng click chứ.
Phân tích cái khúc download đó xem link lấy file trực tiếp là gì rồi tải file về.
Hoặc xem mớ api là cái gì rồi làm.
Túm cái váy lại cứ gửi toàn bộ thông tin lên thì khả năng sẽ có đáp án ngon lành rất cao.
Vậy thôi.
 
Upvote 0
Mình gửi dòng code minh họa nhé

Sub test()
Dim bot As New Selenium.ChromeDriver
bot.Start "Chrome", "https://portal.vietcombank.com.vn/Personal/TG/Pages/ty-gia.aspx?devicechannel=default"
bot.Get "/"
bot.FindElementById("btnExcel").Click
bot.Quit
End Sub

Với code trên thì con bot không đợi download file excel xong, mà sau khi click vào biểu tượng thì thoát luôn.

Các bạn xem giúp mình nhé
 
Upvote 0
Mình gửi dòng code minh họa nhé

Sub test()
Dim bot As New Selenium.ChromeDriver
bot.Start "Chrome", "https://portal.vietcombank.com.vn/Personal/TG/Pages/ty-gia.aspx?devicechannel=default"
bot.Get "/"
bot.FindElementById("btnExcel").Click
bot.Quit
End Sub

Với code trên thì con bot không đợi download file excel xong, mà sau khi click vào biểu tượng thì thoát luôn.

Các bạn xem giúp mình nhé

Bài #8 ở trên bạn có hiểu gì không?

Cần phân tích trang web, lấy API rồi tải file, kế 36+ mới phải click kiểu thế.


Cái thí dụ tỉ giá thì xem đây.



Mẽo họ làm tàu lên sao hỏa rồi mà mình vẫn mua cá chép cưỡi. @@
 
Upvote 0
Hi Befaint

Mình chỉ mới học VBA tương tác với web qua Selenium thôi, mục đích chính để hỗ trợ công việc được nhanh vì công việc của mình là download lấy số liệu liên tục để update qua file excel. Về lập trình mình không có chuyên sâu lắm, Python thì chưa có học nên API bạn nói ở trên mình cũng chưa biết nó là gì

Nếu được bạn chỉnh lại giúp đoạn code download file ở trên nhé. Sau này có dịp học chuyên sâu chắc mình sẽ hiểu nhiều hơn về cái này

Cám ơn bạn nhiều
 
Upvote 0

Đáp án ở bài #8 phía trên đó bạn.

Tức là muốn chữa bệnh cho bệnh nhân thì mình cần đưa chính xác bệnh nhân đó tới bệnh viện để bác sĩ thăm khám, phẫu thuật, kê đơn thuốc các kiểu; chứ không thể đưa một người thế thân tới để chữa bệnh cho người khác được.
 
Upvote 0
Đáp án ở bài #8 phía trên đó bạn.

Tức là muốn chữa bệnh cho bệnh nhân thì mình cần đưa chính xác bệnh nhân đó tới bệnh viện để bác sĩ thăm khám, phẫu thuật, kê đơn thuốc các kiểu; chứ không thể đưa một người thế thân tới để chữa bệnh cho người khác được.
Dùng web bên mình phải vào bằng VPN nên có gửi đoạn code cũng không chạy được
Do đó mình mới gửi vd bằng trang vcb, trong đó có tải file excel. Mình mới check theo như bạn chỉ thì không thấy link download cái file, chỉ thấy name id....
 
Upvote 0
Dùng web bên mình phải vào bằng VPN nên có gửi đoạn code cũng không chạy được
Do đó mình mới gửi vd bằng trang vcb, trong đó có tải file excel. Mình mới check theo như bạn chỉ thì không thấy link download cái file, chỉ thấy name id....

Chuyện bí mật thì đơn giản mà bạn. Làm một cái hợp đồng rằng buộc, nếu abc thì xyz.

Trường hợp này giống như kiểu, nhà có két bạc, quên khóa không thể mở được, giờ bê két đi hoặc gọi chuyên gia/ thợ khóa tới mở. Không lẽ cũng lòng vòng như trên, kêu người ta mách nước để tự mở?

- VPN chuyện bình thường, chẳng có vấn đề gì.
- Chưa biết phân tích trang web.

Nói chung tình trạng này thì một là bạn tự làm, hai là thuê người làm. Hết cách.
 
Upvote 0
Bài #8 ở trên bạn có hiểu gì không?
...
Bài ấy không bắt đầu bằng "hài" hay "đía", không kết thúc bằng "hốp ít heo" hay "rề gát" cho nên có thể coi là không có đầu có đuôi. Không hiểu được.

...
Mẽo họ làm tàu lên sao hỏa rồi mà mình vẫn mua cá chép cưỡi. @@
Tàu lên sao hoả đốt năng lượng xanh?
Cưỡi cá chép tốt cho môi trường. Chỉ cái tội người cung cấp cá chép sau đó đem cá ra sông thả, rồi... nhân tiện liệng cái bao ly lông xuống sông.
Một mùa cúng Táo, nhìn mặt sông ngập bao bịch mà bắt xỉu.
 
Upvote 0
Cảm ơn anh chị em đã view qua cho comment giúp đỡ. Mình close post này.
No problemo, mi querido amigo.
On the other hand, please keep in mind that you although can always say and/or declare that the topic/problem has been solved/resolved, closing the thread is not your decision.
Being a long time member, you should know that this forum is an open platform. All topics are open for discussion.

Thêm phần minh chính:
Xin lỗi mọi người. Tôi viết tiếng ngoại vì e rằng cậu Tây này có khả năng không hiểu rõ tiếng Vệt.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom