Excute JavaScript với Selenium trong WPF

Khóa học Selenium cơ bản đến nâng cao

0.0 (0 đánh giá)
Tạo bởi K9 Cập nhật lần cuối 11:58 20-03-2019 6.753 lượt xem 8 bình luận
Học nhanh

Danh sách bài học

Excute JavaScript với Selenium trong WPF

Dẫn nhập

Trong bài trước, Kteam đã giới thiệu đến bạn THAO TÁC CƠ BẢN VỚI SELENIUM – một thư viện tuyệt vời cho việc Auto WebBrowser.

Ở bài này, chúng ta sẽ tiếp tục tìm hiểu Cách Execute một đoạn JavaScript với Selenium trong WPF.


Nội dung

Để đọc hiểu bài này tốt nhất, bạn cần: 

Trong bài này, chúng ta sẽ cùng tìm hiểu: 

  • Thực thi một đoạn JavaScript với Selenium.
  • Lấy kết quả từ JavaScript.

Thực thi một đoạn JavaScript với Selenium

Chúng ta sẽ dùng lại Project của bài trước để thực hiện bài này nhé! Bạn có thể tìm thấy Project trong bài THAO TÁC CƠ BẢN VỚI SELENIUM

Mở project lên > Trong code MainWindow.xaml.cs, chúng ta bỏ (thẳng tay xóa!) các đoạn code có sẵn này đi: 

// tìm đối tượng theo ID
var searchBar = firefoxDriver.FindElementById("searchUI");
            
// gõ giá trị Selenium Kteam vào thanh tìm kiếm
searchBar.SendKeys("Selenium Kteam");

// Lấy tagssearch ra
var tagssearch = firefoxDriver.FindElementById("tagssearch");

// click vào tagssearch
tagssearch.Click();

Chúng ta bắt đầu thử nghiệm một đoạn JavaScript ngay trên website Howkteam.com bằng cách dùng Console của trình duyệt.

Mở trình duyệt > vào website Howkteam.com > Nhấn F12 > Nhấn vào tab Console( Bảng điều khiển).

Cụ thể mình sẽ thử chạy một đoạn JavaScript có mục đích lấ giá trị của chữ Giáo dục là miễn phí và xuất hiện lên alert dialog trên trình duyệt. Bằng cách dán đoạn JavaScript sau vào Console của Firefox hoặc Chrome.

var content = document.getElementsByClassName('contentpagetop')[0].children[0].innerHTML;
alert(content);

Lưu ý: nếu Firefox bắt phải gõ một đoạn allow pasting thì bạn cứ gõ vào Console. Đó là cơ chế bảo mật nhẹ của Firefox.

Nhấn Enter và kết quả của đoạn text Giáo dục là miễn phí xuất hiện trong alert dialog.

 

Giờ chúng ta sẽ thử thực hiện y chang điều này với Selenium nhé! 

Để thực thi JavaScript với FirefoxDriver (ChromeDriver tương tự) chúng ta dùng lệnh sau:

firefoxDriver.ExecuteAsyncScript(“đoạn javaScript muốn thực thi”);

hoặc

firefoxDriver.ExecuteScript(“đoạn javaScript muốn thực thi”);

Cụ thể trong ví dụ này, mình sẽ thực thi đoạn script như sau:

firefoxDriver.ExecuteScript("var content = document.getElementsByClassName('contentpagetop')[0].children[0].innerHTML;alert(content);");

Code hoàn chỉnh của event Button_Click

private void Button_Click(object sender, RoutedEventArgs e)
{
#region FirefoxDriver
// khởi tạo WebDriver
FirefoxDriver firefoxDriver = new FirefoxDriver();

// chuyển trang đến website howkteam.com
firefoxDriver.Url = "http://www.howkteam.com/";
firefoxDriver.Navigate();
            
// thực thi JavaScript            
firefoxDriver.ExecuteScript("var content = document.getElementsByClassName('contentpagetop')[0].children[0].innerHTML;alert(content);");


#endregion


#region ChromeDriver
//ChromeDriver chromeDriver = new ChromeDriver();
//chromeDriver.Url = "http://www.howkteam.com/";
//chromeDriver.Navigate();

//firefoxDriver.ExecuteScript("");
#endregion
}

Cùng chạy thử chương trình và xem kết quả nào!

Vậy chúng ta đã thành công thực thi một đoạn JavaScript với Selenium. Bạn có thể tự mình thay thế các đoạn JavaScript khác nhé!


Lấy kết quả từ JavaScript

Thực thi được một đoạn JavaScript rồi thì thật tuyệt! Vậy để lấy giá trị của đoạn JavaScript đó ra thì chúng ta làm sao? Cùng Kteam tìm hiểu nhé! 

Để lấy được kết quả JavaScript chúng ta cần dùng interface IJavaScriptExecuter và trong đoạn JavaScript cần return giá trị muốn lấy ra. Sau đó, bạn cần ép kiểu tường minh cho dữ liệu lấy ra của bạn( Cùng một phương thức cho Chrome và Firefox). Như ví dụ dưới đây:

// thực thi JavaScript dùng IJavaScriptExecutor
IJavaScriptExecutor js = firefoxDriver as IJavaScriptExecutor;
// javascript cần return giá trị.
var dataFromJS = (string)js.ExecuteScript("var content = document.getElementsByClassName('contentpagetop')[0].children[0].innerHTML;return content;");
MessageBox.Show(dataFromJS);

Đoạn code trên sẽ lấy giá trị Giáo dục là miễn phí ra và hiển thị lên MessageBox của C#.

Cùng chạy chương trình kiểm chứng kết quả nhé!

Và chúng ta đã thành công lấy giá trị từ JavaScript. Bàn hoàn toàn có thể lấy các giá trị khác với kiểu dữ liệu khác với cùng cách này. Hãy tự mình thử nghiệm nhé. Good luck!


Kết luận

Bài viết này đã sơ lược cho các bạn Cách thực thi và lấy dữ liệu từ JavaScript trong Selenium

Ở bài sau, Kteam sẽ giới thiệu về ELEMENT TRONG SELENIUM.

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 Excute JavaScript 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 likeshare để ủng hộ Kteam và tác giả nhé!

Project

Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới!


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ÌNH LUẬ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ả

K9

Nhà sáng lập Howkteam.com & 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.

Đánh giá

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
mrgyros đã bình luận 05:48 12-04-2019

Hi ad cho mình hỏi chút. Mình muốn lấy 1 mảng bên C# qua javascrip dùng làm sao đc ạ. Ví dụ như
         var lines = File.ReadAllLines(@"C:\Users\DungKaKA\Desktop\1.txt");
            driver = new ChromeDriver(options);
            driver.Navigate().GoToUrl(lines[0]);
            ((IJavaScriptExecutor)driver).ExecuteScript("window.open();");

Mình muốn dùng mảng Lines[] cho đoạn js window.open() kiểu như window.open(lines[0])
Cám ơn Kteam rất nhiều

havanphuong.ft đã bình luận 07:21 16-05-2018

ad cho em hỏi. 
Em muốn sử dụng hàm Wait để cho các câu lệnh dừng đợi trong 1 khoảng thời gian ví dụ là 15s thì e làm thế nào ạ

nguyentrungduc22101993 đã bình luận 23:11 07-05-2018

ad cho e hỏi xíu. giờ e có 1 grid dữ liệu. e muốn chạy 1 vòng for để lọc và alert ra dòng theo điều kiện lọc thì phải làm như thế nào ak

lhn.11411 đã bình luận 08:28 02-02-2018

ajax em hiểu một chút là nó dùng để tương tác với người dùng mà ko cần reload lại trang khi khách hàng nhấn button tìm kiếm nhưng làm sao có thể khi em click button thì button đó gọi một js ra nhưng so họ dùng kỹ thuật ajax nên em không biết làm sau có thể wait ajax load xong ạ

 

Không có video.