Search the Community
Showing results for tags 'guide'.
Found 6 results
-
Xin chào các bạn ! Hôm nay mình nhận được một người đặt tools thao tác tự động với web, mình cũng có tìm hiểu qua trước đây rồi, nhưng chả biết gì cả, giờ vọc lại cũng vọc vạch được 1 tí, gọi là hướng dẫn cho các bạn nào mở đầu mới vào đỡ mất công tìm kiếm. Đồ nghề : Visual studio 2017 bản nào cũng được ( community,pro,enterprise ) thế thôi, à còn mạng internet nữa Bước 1 : Tạo winform mới nhé, rồi tạo 1 button để click cho nó dễ. Bước 2 : Nhấn chuột phải vào tên Project, chọn Manage Nuget Package... -> chọn Borrows -> gõ tên Selenium . Các bạn cần tải về những gì ? - Thư viện Selenium.Webdriver ( bắt buộc ) - Nếu bạn dùng Chrome thì tải : Selenium.Chrome.Webdriver - Nếu bạn dùng Firefox thì tải : Selenium.Firefox.Webdriver Bước 3 : Sử dụng thư viện Selenium bằng cách thêm 4 dòng này lên trên cùng, ở đây mình ví dụ với Browser Chrome nhoé (tương tự với Firefox ? using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Interactions; using OpenQA.Selenium.Support.UI; Bước 4 : Rồi bắt tay làm nào . Hàm khởi tạo trước nhé : IWebDriver driver = new ChromeDriver(); Giờ đến tác dụng của các command : 1.Muốn mở một trang web, ta dùng lệnh này : driver.Url="https://www.google.com.vn"; 2. Muốn lấy sources của trang web, ta dùng lệnh này : string Sources = driver.PageSources; 3. Muốn đợi 1 element nào đó xuất hiện : WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(d => d.FindElement(By.Id("element nào đó"))); 4. Muốn tác động vào 1 element nào đó, trước hết ta phải xem element đó nằm trong các thẻ nào, ở đây tớ sẽ lấy trang google làm mẫu nhoé. Sau khi sử dụng command ở 1. ta vào trang google nhấn F12 vào ô tìm kiếm Google,ở đây ta thấy có 3 cái attribute có thể lấy để tác động điền chữ vào ô tìm kiếm : Ví dụ 1 : tác động bằng ID : driver.FindElement(By.Id("lst-ib")).SendKeys("từ muốn điền"); Ví dụ 2 : tác động qua Class : driver.FindElement(By.ClassName("lst-ib")).SendKeys("từ muốn điền"); Ví dụ 3 : tác động qua Name : driver.FindElement(By.Name("lst-ib")).SendKeys("từ muốn điền"); Ví dụ 4 : tác động qua TagName : driver.FindElements(By.TagName("a")) //Tag ở đây chính là tag ở đầu < . ví dụ <a href="https://www.teamcodedao.com">Home Page</a> thì ở đây là tag a 5. Viết được từ cần viết vào ô rồi, vậy giờ mình muốn bấm vào nút tìm kiếm thì phải làm như thế nào ? À thì lại tưởng tự, ta tìm tới element có thể tác động được, lại F12 với chữ "Tìm với Google" với trang google tiếp ta thấy như hình dưới : Ta lại thấy xuất hiện attribute Name có thể tác động. Okemen, ta làm như sau : driver.FindElement(By.Name("btnK")).Submit(); Ở đây ta có 2 cách, 1 là submit, 2 là click, tác dụng như nhau thôi ? đều nhấn chuột vào cái button "Tìm với Google". 6. Bạn muốn thay đổi Profile ? No problem, chúng ta code như sau : ChromeOptions ChOpt = new ChromeOptions(); ChOpt.AddArgument("--profile-directory=Tên profile bạn cần"); ChOpt.AddArgument("--user-data-dir=C:\Users\Tên máy tính của bạn\AppData\Local\Google\Chrome\User Data"); //<< cái này tớ sử dụng Path mặc định của chrome, các bạn thay đổi nếu bạn đã thay đổi chỗ để profile IWebDriver driver = new ChromeDriver(ChOpt); Xong rất đơn giản phải không, nhưng đéo nói thì đéo ai biết cả ? .. 7. Một khi đã quá thuần thục và quen thuộc với Selenium, bạn lại muốn tắt cmn cái cửa sổ cmd đen xì đáng ghét ? mà đến giờ vẫn chưa biết làm cách nào ?? Hãy làm như bên dưới đây : ChromeDriverService Cds = ChromeDriverService.CreateDefaultService(); Cds.HideCommandPromptWindow = true; ChromeOptions ChOpt = new ChromeOptions(); ChOpt.AddArgument("--profile-directory=Tên profile bạn cần"); string PathMacDinh = Environment.ExpandEnvironmentVariables("%LOCALAPPDATA%\\Google\\Chrome\\User Data\\"); //ChOpt.AddArgument("--user-data-dir=C:\Users\Tên máy tính của bạn\AppData\Local\Google\Chrome\User Data"); //<< cái này tớ sử dụng Path mặc định của chrome, các bạn thay đổi nếu bạn đã thay đổi chỗ để profile ChOpt.AddArgument("--user-data-dir=" + PathMacDinh); IWebDriver driver = new ChromeDriver(Cds,ChOpt); Xong, các bạn nhấn F5 ngồi xem xem nó ra cái profile nào ? . 8. Chạy trực tiếp JS trên Browser , Selenium thật bá đạo :") string javaScript = "var evObj = document.createEvent('MouseEvents');"+ "evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);"+ "arguments[0].dispatchEvent(evObj);"; IJavaScriptExecutor executor = driver as IJavaScriptExecutor; executor.ExecuteScript(javaScript, webElement); --------------------------------------------------------------------------------------------------------------------- (IWebElement) ((IJavaScriptExecutor)driver).ExecuteScript("return $('.cheese')[0]"); --------------------------------------------------------------------------------------------------------------------- IList labels = driver.FindElements(By.TagName("label")); IList inputs = (IList) ((IJavaScriptExecutor)driver).ExecuteScript( "var labels = arguments[0], inputs = []; for (var i=0; i < labels.length; i++) {" + "inputs.push(document.getElementById(labels.getAttribute('for'))); } return inputs;", labels); Trên đây là các bước khá cơ bản, đủ để bạn thao tác làm 1 kich bản nhè nhẹ với 1 số trang web rồi . Tớ sẽ cập nhật thêm. Cám ơn các bạn đã theo dõi.
- 46 trả lời
-
- 13
-
- how to use selenium
- guide selenium with csharp
-
(và 2 tags nữa)
Tagged with:
-
* Chú ý: WinHttp trên WinXP không còn support hầu như các trang Https nên UDF chạy tốt nhất từ Win7 trở lên. A/ LỜI NÓI ĐẦU - UDF dựa trên nền tảng của WinHttp.dll có sẵn của Window nên còn hạn chế rất nhiều mặt như tương tác sâu và session, không xài SOCKS để cài đặt proxy được... Còn lại thì nói chung xài rất ổn. - Mình không phải dân lập trình, chỉ là mê AutoIt, tập tành code kiết này nọ nên có thể kiến thức, lý thuyết, cách gọi …trong lập trình của mình không chính xác và chuẩn lắm, mong các bạn thông cảm. - Dùng WinHttp theo mình thì đây là phương thức gửi nhận dữ liệu mạng không cần qua 1 cái Web Browser trung gian. Ví dụ bình thường bạn muốn tải nhạc, bạn vào Chrome, vào ZingMp3, lựa bài muốn tải, bấm Tải về. Còn khi dùng WinHttp, đơn giản, bạn code 1 chương trình gửi 1 thông tin đến ZingMp3 rằng bạn muốn tải bài đó và nhận dữ liệu gửi về, không cần qua một chương trình nào khác nữa.- Đây là bài viết dành cho những ai đang mới bắt đầu tìm hiểu về WinHttp, mình thì chỉ nắm những cái gọi là cơ bản thôi, nói chung là vừa đủ xài để ra cái kết quả cuối cùng hay nói nôm na là thực hành nhiều để ra cái kinh nghiệm, chứ về lý thuyết, trả lời các câu hỏi tại sao, vì sao phải làm như vậy thì…mình không biết. B/ CÁC YÊU CẦU ĐẦU TIÊN1- Trong bài hướng dẫn, toàn bộ thông tin gửi nhận request mình dùng addon Live HTTP Headers trên Firefox để xem. Nếu chưa cài bạn có thể vào đây tải về: (Lưu ý là addon này chỉ chạy trên Firefox bản 57 trở về trước, bản mới sau này không cài được). Nếu đã quen thuộc với request rồi bạn có thể sử dụng chức năng Develop có sẵn của trình duyệt (bấm F12 trên bàn phím, sau đó chọn tab Network) để xem request cho tiện hoặc các phần mềm như HttpAnalysis, Fiddler... https://addons.mozilla.org/vi/firefox/addon/live-http-headers/ Sau khi cài xong ta vào Tab Config, sau đó tích chọn Exclude URLS with regexp và paste vào ô kế bên nội dung sau: Mã (Text): ^https://safebrowsing-cache.google.com|^https://scontent-hk|edge-chat.facebook.com|facebook.com/feed/badge/|facebook.com/a/bz$|^https://pixel.facebook.com|.gif$|.jpg$|.ico$|.css$|.js$|.png$|googleads|eclick.vn|doubleclick.net|ants.vn|\.css\?v=|adsplay|google-analytics.com Mục đích của việc trên là để lọc bớt những request thừa, bởi khi chạy Live HTTP Headers sẽ có rất nhiều request hiển thị và rất rối mắt nếu không quen. 2- Tải về UDF _HttpRequest.au3 + Tập tin trợ giúp _HttpRequest Help.chm: Giờ đây tất cả hướng dẫn, mẹo vặt, code... mình đều đã tổng hợp toàn bộ trong file Help này. Hy vọng nó sẽ giúp ích thật nhiều cho các bạn trong việc học về request bằng WinHttp/_HttpRequest Link tải (14.0.6 - 23/07/2019): https://drive.google.com/open?id=1AS2mWTKMF5btxyULhh8JIGqD_9yxshif Sửa lỗi mở file Help mà chỉ ra trang trắng không có nội dung: Nhấp phải vào file _HttpRequest_Help.chm, chọn Properties, sau đó tích chọn Unblock, cụ thể sẽ như hình hướng dẫn bên dưới: 3- Cài CallTips cho SciTE: Việc này khá quan trọng bởi vì số lượng hàm là rất nhiều, calltips sẽ giúp ích cho việc code nhanh chóng hơn và không mất nhiều thời gian để nhớ đến tên hàm. Thực hiện cài calltips như sau: Mở file _HttpRequest_Help.chm đã tải ở link trên. Vào mục Introduction. Vào mục CallTips. Làm theo hướng dẫn đã nói rất rõ trong mục CallTips vừa mở. 4- Đọc kỹ hướng dẫn về StringRegExp (tách chuỗi) bởi nó sẽ được sử dụng rất nhiều khi làm về request. Ít nhất phải nắm được căn bản của hàm StringRegExp mới có thể đọc hiểu các ví dụ và thực hành. File _HttpRequest_Help.chm đã có 2 bài viết về StringRegExp, 1 bài đơn giản là do mình viết, một bài là do lazycat (diễn đàn hocautoit.com cũ) viết. 5- Đọc thật kỹ nội dung _HttpRequest_Help.chm về hàm chính _HttpRequest và các tham số của nó điều này hết sức quan trọng vì đây là hàm chủ chốt thực hiện request và liên quan đến tất cả các hàm bổ trợ còn lại của UDF. ------------------------------------***---------------------------------------- OK, đó là 5 điều cần làm trước khi đi tiếp vào con đường request rắc rối này. File _HttpRequest_Help.chm đã bao gồm: Ví dụ mẫu trong tất cả các hướng dẫn sử dụng các hàm trong UDF. Phần Practice cung cấp những bài tập request từ cơ bản đến phức tạp hơn. Để chạy thử code mẫu, bạn có thể bấm nút Copy To Clipboard như đã thấy ở hình trên rồi paste vào SciTe là xong. Chúc các bạn học request thành công.
- 14 trả lời
-
- 3
-
Xin chào các bạn, topic này mình sẽ dành riêng cho các bạn post tổng hợp các tài liệu, giáo trình hướng dẫn lập trình C Sharp từ cơ bản đến nâng cao sau đó tớ sẽ list lại theo một danh sách. Các bạn có thể chia sẻ link tài liệu của các bạn lên đây nhé. Cám ơn các bạn sưu tầm và đóng góp cùng với mình. 1. Giáo trình C Sharp Link : [Hidden Content] 2. Trọn bộ 2 phần hướng dẫn cơ bản c sharp và hướng dẫn nâng cao c sharp của giảng viên Trần Duy Thanh : [Hidden Content]
- 1 trả lời
-
- 22
-
- advance
- c sharp for begginer
-
(và 4 tags nữa)
Tagged with:
-
example code Chia sẻ 215 code example về python
Thiên Chi Kiều Nữ đã đăng một chủ đề trong Hướng dẫn
Không biết có ai mới học python như mình không, mới tìm được link này nên share cho mn :D: (Cỡ hơn 215 code example về python) Nên mình đã down hết code về kèm save thêm file pdf anh này hướng dẫn về. Và tạo một script python khác để mở cái đống python này nhanh hơn ( file ______SELECT CODE.py). Script này sẽ làm 2 việc: 1. Mở file py tương ứng với số bạn chọn trong list (trên Web hoặc file pdf trong thư mục đều được) bằng program mở file python mặc định. Mình cài đặt luôn dùng Sublime Text nên nó sẽ tự mở tab mới trong Sublime Text. 2. Open file pdf có hướng dẫn tương ứng (save từ web anh này viết theo cụm, không phải chia bài theo từng code example đâu nhé :p ) Mình dùng excel để quản lý file nên cần thêm pandas và xlrd. Ai dùng nhớ chỉnh lại đường link chứa các file pdf trong code (vì gộp lại trong 1 thư mục riêng không nằm cùng code :p) Link : [Hidden Content] -
Link khóa học Python cơ bản từ không biết gì đến siêu nhân :)). Nguồn sưu tầm nên không nhớ :") . Các bác biết của ai thì có thể reply mình thêm vào. Link : [Hidden Content] * Update link drive google
- 8 trả lời
-
- 26
-
- full guide python from zero to hero
- basic
-
(và 3 tags nữa)
Tagged with:
-
share Request login Garena gọn nhẹ bằng _HttpRequest ver.14
Huân Hoàng đã đăng một chủ đề trong Hướng dẫn
Code sử dụng UDF _HttpRequest. Nếu ai chưa biết về UDF này thì đọc bài viết tại đây: Mình từng có một bài viết hướng dẫn cách login Garena bằng cách giải thuật thuần tuý, nhìn khá là rối rắm, nội dung tại: http://autoitvn.com/threads/thuat-toan-garena-huong-dan-cach-login-va-phuong-thuc-ma-hoa-mat-khau-cua-no-voi-_httprequest.900/ --------------------------------------------------------------------------------- Hôm nay mình sẽ đăng code sử dụng hàm _JS_Execute để giải quyết công đoạn mã hoá mật khẩu khiến nó trở nên đơn giản hơn rất nhiều. #include <_HttpRequest.au3> $username = '' $password = '' $TimeStamp = _GetTimeStamp() $PreLogin = _HttpRequest(2, 'https://sso.garena.com/api/prelogin?account=' & $username & '&format=json&id=' & $TimeStamp & '&app_id=10000') If StringInStr($PreLogin, 'error_require_captcha') Then ; Nếu bắt điền captcha thì: $UUID = _JS_Execute('', "function uuid() {return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);return v.toString(16);});}; var uuid=uuid()", 'uuid') $sCaptcha = _HttpRequest_SimpleCaptchaGUI(_HttpRequest(2, 'https://captcha.garena.com/image?key=' & $UUID)) $PreLogin = _HttpRequest(2, 'https://sso.garena.com/api/prelogin?account=' & $username & '&format=json&id=' & $TimeStamp & '&app_id=10000&captcha_key=' & $UUID & '&captcha=' & $sCaptcha) EndIf $aV = StringRegExp($PreLogin, '"v[12]": "([^"]+)"', 3) $CodeJS = _ "var password = '" & $password & "';" & _ "var passwordMd5 = CryptoJS.MD5(password);" & _ "var passwordKey = CryptoJS.SHA256(CryptoJS.SHA256(passwordMd5 + '" & $aV[0] & "') + '" & $aV[1] & "');" & _ "var encryptedPassword = CryptoJS.AES.encrypt(passwordMd5, passwordKey, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.NoPadding});" & _ "encryptedPassword = CryptoJS.enc.Base64.parse(encryptedPassword.toString()).toString(CryptoJS.enc.Hex);" $encryptedPassword = _JS_Execute('https://sso.garena.com/js/crypto.js?v=0.60', $CodeJS, 'encryptedPassword') $sLogin = _HttpRequest(2, 'https://sso.garena.com/api/login?account=' & $username & '&password=' & $encryptedPassword & '&redirect_uri=https://www.garena.vn/&format=json&id=1472983484321&app_id=10000') MsgBox(4096, 'Login data', $sLogin) Have fun :v- 2 trả lời
-
- 3
-
- _httprequest
- autoit
-
(và 6 tags nữa)
Tagged with: