Admin 856 Đã viết 3/12/2018 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. 8 5 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Admin 856 Đã viết 10/01/2019 Phần 2 : thay proxy hoặc sock cho Chrome hoặc FireFox Nhân tiện có làm cái tools đi dạo :") nên tớ hướng dẫn thêm phần này cho các bạn. Ban đầu tớ cứ nghĩ là các trình duyệt sẽ code mẫu giống nhau, nhưng bắt tay vào thì mới thấy nó khác 2.1 Add Proxy hoặc Sock cho Chrome ( đơn giản thì ta làm trước ): Code mẫu, các bạn chỉ cần thế proxy hoặc sock vào là được Nội dung ẩn Bạn cần Reaction hoặc trả lời chủ đề này để thấy nội dung bị ẩn. 2.2 Add Proxy hoặc Sock cho FireFox : Nội dung ẩn Bạn cần Reaction hoặc trả lời chủ đề này để thấy nội dung bị ẩn. Phần 3 : Add cookie trong Selenium Các bạn làm theo mẫu sau nhé : Nội dung ẩn Bạn cần Reaction hoặc trả lời chủ đề này để thấy nội dung bị ẩn. 61 2 22 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Etrama 1 Đã viết 11/01/2019 Vừng ơi mở ra 1 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
tienson 0 Đã viết 20/01/2019 cám ơn bạn, hay quá Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Cường Đỗ 0 Đã viết 6/06/2019 Cám ơn ad, bài viết rất hay. DevTools listening on ws://127.0.0.1:63031/devtools/browser/970575f0-e6aa-4fea-86d3-4f97928dd14b [1559829724.929][WARNING]: Timed out connecting to Chrome, retrying... Mình bị lỗi vậy là bị sao vậy ad ơi Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Admin 856 Đã viết 6/06/2019 1 giờ trước, Cường Đỗ said: Cám ơn ad, bài viết rất hay. DevTools listening on ws://127.0.0.1:63031/devtools/browser/970575f0-e6aa-4fea-86d3-4f97928dd14b [1559829724.929][WARNING]: Timed out connecting to Chrome, retrying... Mình bị lỗi vậy là bị sao vậy ad ơi bạn phải đưa code lên mình mới biết chứ :| còn lỗi kia nó thông báo là không kết nối đc tới chrome :v đang thử lại.. Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Hùng Sơn Tinh 0 Đã viết 2/08/2019 Rất hay, mình trước toàn phải mò mấy trang nước ngoài về thằng này giờ mới thấy bài tiếng việt chất lượng. anh em nào cần hỗ trợ inbox mình hỗ trợ nhiệt tình auto này nhé. skype hungvt216 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
beakhear 0 Đã viết 24/09/2019 Multi thì làm sao vậy anh Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
NamAnh 0 Đã viết 26/09/2019 Cho e hỏi e muốn thao trực tiếp trên browser đang bật thì có đc k ạ . Hay bắt buộc phải bật trình duyệt khác lên ạ . tại e muốn sử dụng trên nhiều user trên chrome Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Admin 856 Đã viết 26/09/2019 30 phút trước, NamAnh said: Cho e hỏi e muốn thao trực tiếp trên browser đang bật thì có đc k ạ . Hay bắt buộc phải bật trình duyệt khác lên ạ . tại e muốn sử dụng trên nhiều user trên chrome không bạn nhé, tất cả đều phải chạy từ 1 chrome do phần mềm mở mới thao tác được.. Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Lãng Du 0 Đã viết 6/10/2019 cảm ơn ad Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Đồn Vũ 0 Đã viết 6/10/2019 Thanks ad Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
quanxutk1 0 Đã viết 11/10/2019 quá hay Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
info259 0 Đã viết 23/02/2020 On 4/12/2018 at 00:20, Admin said: cám ơn bác với cho e hỏi làm sau mở đồng thời nhiều tab chorme cùng một lúc ạ, thank bác Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites