Bảng cheat bộ định vị Selenium
Trong bài Hướng dẫn về Selenium này, tôi sẽ giới thiệu với các bạn về Selenium Webdriver, framework kiểm thử tự động được sử dụng phổ biến nhất trên thị trường hiện nay. Nó có nguồn mở và có thể được sử dụng với tất cả các ngôn ngữ lập trình nổi bật như Java, Python, C#, Ruby, Perl, v.v. , để tự động hóa các hoạt động của trình duyệt. Thông qua bài viết này, tôi sẽ cho bạn biết mọi thứ bạn cần biết để bắt đầu thử nghiệm các ứng dụng web bằng Selenium WebDriver. Show
Dưới đây là các chủ đề tôi sẽ trình bày trong bài viết này về Hướng dẫn Selenium Blog hướng dẫn Selenium này sẽ cung cấp cho bạn một cái nhìn thoáng qua về tất cả các khái niệm quan trọng cần thiết cho Đào tạo Selenium Selenium WebDriver là gì?Selenium WebDriver là một khung thử nghiệm tự động hóa dựa trên web có thể kiểm tra các trang web được khởi chạy trên nhiều trình duyệt web và hệ điều hành khác nhau. Trên thực tế, bạn cũng có quyền tự do viết các tập lệnh kiểm tra bằng các ngôn ngữ lập trình khác nhau như Java, Perl, Python, Ruby, C#, PHP và JavaScript. Xin lưu ý rằng Mozilla Firefox là trình duyệt mặc định của Selenium WebDriver. Nhưng nhiều lần, những người thử nghiệm vừa chớm nở có nghi ngờ này, Selenium có dễ học không?Để trả lời câu hỏi này một cách rất bình thường, tôi sẽ nói, “Vâng, đó là. ”. Selenium thực sự dễ học và thành thạo vì bạn cần có hiểu biết cơ bản về bất kỳ ngôn ngữ lập trình nổi bật nào như Java, C#, Python, Perl, Ruby, PHP. Có kiến thức trước về bất kỳ ngôn ngữ lập trình nào trong số này sẽ hữu ích cho việc viết các trường hợp thử nghiệm. Nhưng trong trường hợp bạn không có thì đừng lo lắng. Selenium IDE là một công cụ dựa trên GUI mà bạn có thể sử dụng hiệu quả Phần mềm Selenium làm gì?Dưới đây là một số ứng dụng thú vị nhất của phần mềm Selenium
Những điều cơ bản của Selenium là gì?WebDriver được giới thiệu như một phần của Selenium v2. 0. Selenium v1 chỉ bao gồm IDE, RC và Grid. Nhưng bước đột phá lớn trong dự án Selenium là khi WebDriver được phát triển và giới thiệu như một sự thay thế trong Selenium v2. Tuy nhiên, với việc phát hành Selenium v3, RC đã không còn được dùng nữa và chuyển sang gói kế thừa. Bạn vẫn có thể tải xuống và làm việc với RC, nhưng đừng mong đợi bất kỳ sự hỗ trợ nào cho nó Tóm lại, lợi thế của WebDriver so với RC là
Nhưng nhược điểm khi so sánh với RC là không thể tạo báo cáo thử nghiệm. RC tạo báo cáo chi tiết Hình ảnh bên dưới mô tả cách thức hoạt động của WebDriver Nhưng có bao giờ bạn thắc mắc tại sao lại cần Selenium Webdriver chưa? Hạn chế của Selenium RC và sự ra đời của WebDriverBạn có thể ngạc nhiên khi tôi nói rằng Selenium RC đã trở thành hit ngay khi nó được tung ra. Đó là bởi vì nó đã khắc phục được vấn đề về chính sách cùng nguồn gốc, một vấn đề lớn khi thử nghiệm các ứng dụng web với Selenium Core. Nhưng bạn có biết vấn đề về chính sách cùng nguồn gốc là gì không? Chính sách cùng nguồn gốc là các quy tắc thực thi mô hình bảo mật ứng dụng web. Theo chính sách cùng nguồn gốc, trình duyệt web sẽ cho phép mã JavaScript truy cập các phần tử trên trang web, khi và chỉ khi cả JavaScript và trang web đang được kiểm tra được lưu trữ trên cùng một miền. Selenium Core là một công cụ kiểm tra dựa trên JavaScript đã bị vô hiệu hóa vì lý do tương tự là nó không thể kiểm tra mọi trang web Nhưng khi Selenium RC xuất hiện, nó đã loại bỏ vấn đề về chính sách cùng nguồn gốc của những người thử nghiệm. Nhưng, RC đã làm điều đó như thế nào? . Vì vậy, RC là một công cụ là sự kết hợp của hai thành phần. Máy chủ Selenium RC và máy khách Selenium RC Máy chủ Selenium RC là một máy chủ proxy HTTP, được thiết kế để “lừa” trình duyệt tin rằng Selenium Core và ứng dụng web đang được kiểm tra là từ cùng một miền. Do đó, không có cách nào ngăn mã JavaScript truy cập và kiểm tra bất kỳ trang web nào Mặc dù Selenium RC là một thành công lớn, nhưng nó cũng có những vấn đề riêng. Cái chính là thời gian thực hiện các bài kiểm tra. Vì máy chủ Selenium RC là người trung gian trong giao tiếp giữa trình duyệt và các lệnh Selenium của bạn, nên việc thực thi kiểm tra rất tốn thời gian. Bên cạnh yếu tố thời gian, kiến trúc của RC cũng hơi phức tạp Kiến trúc này liên quan đến việc tiêm Selenium Core đầu tiên vào trình duyệt web. Sau đó Selenium Core sẽ nhận hướng dẫn từ máy chủ RC và chuyển nó thành lệnh JavaScript. Mã JavaScript này chịu trách nhiệm truy cập và kiểm tra các phần tử web. Nếu bạn nhìn vào hình ảnh bên dưới, bạn sẽ biết được cách thức hoạt động của RC Để khắc phục những vấn đề này, Selenium WebDriver đã được phát triển. WebDriver nhanh hơn vì nó tương tác trực tiếp với trình duyệt và không có sự tham gia của máy chủ proxy bên ngoài. Kiến trúc cũng đơn giản hơn vì trình duyệt được kiểm soát từ cấp hệ điều hành. Hình ảnh dưới đây sẽ giúp bạn hiểu cách thức hoạt động của WebDriver Một lợi ích khác với WebDriver là nó hỗ trợ thử nghiệm trên trình điều khiển Đơn vị HTML là trình điều khiển không đầu. Khi chúng ta nói trình điều khiển không đầu, điều đó có nghĩa là trình duyệt không có GUI. Mặt khác, RC không hỗ trợ trình điều khiển Đơn vị HTML. Đây là một số lý do khiến WebDriver vượt qua RC Trước khi tìm hiểu các khái niệm về Selenium, bạn nên có hiểu biết cơ bản về Java hoặc bất kỳ ngôn ngữ lập trình hướng đối tượng nào khác. Các ngôn ngữ được Selenium hỗ trợ bao gồm C#, Java, Perl, PHP, Python và Ruby. Hiện tại Selenium Webdriver phổ biến nhất với Java và C# Bây giờ chúng ta hãy tiếp tục và tìm hiểu về “các phần tử trình duyệt” trong phần tiếp theo của hướng dẫn Selenium này, nơi tôi sẽ cho bạn biết những phần tử này là gì và cách thử nghiệm diễn ra trên các phần tử web này Các phần tử trình duyệt là gì?Các phần tử là các thành phần khác nhau hiện diện trên các trang web. Các yếu tố phổ biến nhất mà chúng tôi nhận thấy khi duyệt là
Kiểm tra các yếu tố này về cơ bản có nghĩa là chúng tôi phải kiểm tra xem chúng có hoạt động tốt và phản hồi theo cách chúng tôi muốn hay không. Ví dụ: nếu chúng tôi đang kiểm tra hộp văn bản, bạn sẽ kiểm tra hộp văn bản đó để làm gì?
Nếu chúng tôi đang thử nghiệm một hình ảnh, chúng tôi có thể muốn
Tương tự, các hoạt động có thể được thực hiện trên từng phần tử được đề cập trước đó. Nhưng chỉ sau khi các phần tử được đặt trên trang web, chúng ta mới có thể thực hiện các thao tác và bắt đầu kiểm tra chúng phải không? Định vị các phần tử trình duyệt hiện diện trên trang webMỗi phần tử trên một trang web sẽ có các thuộc tính (property). Các phần tử có thể có nhiều hơn một thuộc tính và hầu hết các thuộc tính này sẽ là duy nhất cho các phần tử khác nhau. Ví dụ: xem xét một trang có hai phần tử. một hình ảnh và một hộp văn bản. Cả hai phần tử này đều có thuộc tính "Tên" và thuộc tính "ID". Các giá trị thuộc tính này cần phải là duy nhất cho mỗi phần tử. Nói cách khác, hai phần tử không thể có cùng giá trị thuộc tính. Các phần tử có thể có cùng giá trị cho 'Tên lớp' Trong ví dụ được xem xét, hình ảnh và hộp văn bản không được có cùng giá trị 'ID' cũng như giá trị 'Name' giống nhau. Tuy nhiên, có một số thuộc tính có thể chung cho một nhóm thành phần trên trang. Tôi sẽ cho bạn biết đó là những thuộc tính nào sau, nhưng trước đó, hãy để tôi liệt kê 8 thuộc tính mà chúng ta có thể xác định vị trí các phần tử bằng cách sử dụng. Các thuộc tính đó là ID, Tên, Tên lớp, Tên thẻ, Văn bản liên kết, Văn bản liên kết một phần, CSS và XPath Vì các phần tử được định vị bằng các thuộc tính này nên chúng tôi gọi chúng là 'Bộ định vị'. Bộ định vị là
Bằng cách nhìn vào cú pháp trên, bạn có thể nhận ra rằng các bộ định vị được gọi bên trong các phương thức. Vì vậy, trước khi tiếp tục, bạn cần tìm hiểu tất cả các phương pháp, lệnh trình duyệt và chức năng khác có thể được sử dụng để thực hiện các thao tác trên các phần tử Thao tác trên phần tử trình duyệtTừ phần này của blog trở đi, bạn sẽ có rất nhiều niềm vui vì sẽ có ít lý thuyết hơn và nhiều mã hơn. Vì vậy, hãy chuẩn bị sẵn sàng và luôn mở IDE Eclipse của bạn với các gói Selenium cần thiết đã được cài đặt Để bắt đầu kiểm tra một trang web, trước tiên chúng ta cần mở trình duyệt, sau đó điều hướng đến trang web bằng cách cung cấp URL phải không? . Đầu tiên, trình duyệt Firefox sẽ được bắt đầu và sau đó nó sẽ điều hướng đến trang đăng nhập của Facebook package seleniumWebDriver; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class WebDriverClass { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver", "files/geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("https://www.facebook.com/"); driver.getTitle(); driver.quit(); } } tổ chức nhập khẩu. openqa. selen. Trình điều khiển web; tổ chức nhập khẩu. openqa. selen. firefox. Trình điều khiển Firefox; Hệ thống. setProperty(“trình điều khiển web. con tắc kè. trình điều khiển”, “tệp/trình điều khiển tắc kè. exe”); . Sau Firefox 35, chúng ta cần tải xuống trình điều khiển Gecko để hoạt động với WebDriver. Trong trường hợp bạn muốn thử nghiệm trên chrome, thì bạn phải tải xuống ChromeDriver, đây là một. exe và chỉ định đường dẫn của nó trong dòng mã này. Chúng tôi phải làm điều đó tương tự trong trường hợp các trình duyệt khác cũng vậy Trình điều khiển WebDriver = FirefoxDriver mới(); người lái xe. nhận(“https. //www. giáo dục. đồng/”); người lái xe. getTitle(); người lái xe. từ bỏ(); Tuy nhiên, nếu bạn muốn điều hướng đến một URL khác và sau đó thực hiện kiểm tra thì sao? . lệnh to() như được hiển thị trong đoạn mã bên dưới. Nếu sau đó bạn muốn quay lại trang trước, thì bạn có thể làm điều đó bằng cách sử dụng điều hướng. quay lại() lệnh. Tương tự để làm mới trang hiện tại, bạn có thể sử dụng điều hướng. làm mới() lệnh driver.navigate().to(“https://www.edureka.co/testing-with-selenium-webdriver”); driver.navigate().refresh(); driver.navigate().back(); Nếu bạn muốn tối đa hóa kích thước của cửa sổ trình duyệt, thì bạn có thể làm điều đó bằng cách sử dụng mã trong đoạn mã bên dưới driver.manage().window().maximize(); Trong trường hợp bạn muốn đặt kích thước tùy chỉnh cho cửa sổ trình duyệt, thì bạn có thể đặt kích thước của riêng mình như trong đoạn mã bên dưới Dimension d = new Dimension(420,600); driver.manage().window().setSize(d); Bây giờ bạn đã biết hầu hết những điều cơ bản, hãy chuyển sang chủ đề tiếp theo trong blog hướng dẫn về Selenium này. Hãy thử tìm một phần tử trên trang web và sau đó thực hiện bất kỳ thao tác nào có thể Tôi khá chắc chắn rằng tất cả các bạn đều có tài khoản Facebook. Vì vậy, hãy để tôi chỉ cho bạn cách đăng nhập vào Facebook bỏ qua thông tin đăng nhập từ chính mã đó Có hai trường văn bản trong trang đăng nhập Facebook, một cho Email/Điện thoại và một cho Mật khẩu. Chúng ta phải xác định vị trí hai phần tử này, chuyển thông tin đăng nhập cho các phần tử đó và sau đó tìm phần tử thứ ba. Nút đăng nhập cần được nhấp vào Nhìn vào ảnh chụp màn hình bên dưới. Đây là ảnh chụp màn hình trang đăng nhập của Facebook Nếu bạn Kiểm tra (Ctrl + Shift + i) trang này, thì bạn sẽ nhận được cửa sổ tương tự trong trình duyệt của mình. Sau đó, bên dưới Phần tử, danh sách tất cả các phần tử có trên trang và thuộc tính của chúng sẽ được hiển thị. Có ba phần được đánh dấu trong ảnh chụp màn hình ở trên. Phần tử được đánh dấu đầu tiên là trường văn bản email, phần thứ hai là trường văn bản mật khẩu và phần thứ ba là nút Đăng nhập Nếu bạn có thể nhớ lại, tôi đã đề cập trước đó rằng các phần tử này có thể được định vị bằng các kỹ thuật định vị phần tử. Hãy sử dụng nó để xác định vị trí các phần tử này và gửi các giá trị trường. Vì vậy, hãy bắt đầu với việc tìm phần tử và thực hiện thao tác trên phần tử đó. Mã cho nó nằm trong đoạn mã dưới đây driver.findElement(By.name("email")).sendKeys("[email protected]"); driver.findElement(By.name("pass")).sendKeys("xxxxxx"); driver.findElement(By.id("u_0_q")).click(); Trong dòng #1, chúng tôi đang xác định phần tử Email theo thuộc tính 'Tên' duy nhất của nó và gửi cho nó EmailID. Chỉ thêm những dòng mã này có thể không đủ. Đó là do tính năng động của trang, trang có thể không phản hồi ngay lập tức và vào thời điểm tải trang, WebDriver sẽ bị chấm dứt và đưa ra lỗi ngoại lệ hết thời gian chờ. Sự cố này có thể không xảy ra trên trang của Facebook vì tốc độ nhanh, nhưng rất có thể sẽ xảy ra ở bất kỳ trang web Thương mại điện tử nào khác và các trang web động khác Để khắc phục vấn đề này, chúng ta cần sử dụng một kỹ thuật nâng cao. Chúng tôi cần yêu cầu Trình điều khiển web của mình đợi sau khi trang được truy cập và sau khi tải xong, chúng tôi cần xác định vị trí các phần tử rồi thực hiện các hành động Trong trường hợp bạn muốn WebDriver của mình đợi cho đến khi tất cả các phần tử tải trong một trang web rồi đóng trình duyệt, thì chúng tôi có thể đạt được điều đó bằng cách sử dụng trình điều khiển. phương thức wait() hoặc Chủ đề. phương thức ngủ (). Tuy nhiên, nếu bạn đang viết mã nâng cao hơn, thì bạn nên sử dụng Chờ đợi tiềm ẩn hoặc Chờ đợi rõ ràng. Trong blog tiếp theo của loạt bài hướng dẫn Selenium này, tôi sẽ giải thích khái niệm về điều kiện chờ. Nhưng đối với trường hợp của chúng tôi, các lệnh dưới đây là đủ driver.wait(5000); // or use this:- Thread.sleep(5000); Tuy nhiên, trong khi làm việc với các điều kiện chờ, hãy nhớ nhập thư viện này. Toàn bộ mã tôi đã giải thích, có trong đoạn mã dưới đây package seleniumWebDriver; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import java.util.concurrent.TimeUnit; public class WebDriverClass { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver", "files/geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("https://www.facebook.com/"); driver.manage().window().maximize(); driver.getTitle(); driver.navigate().to(“https://www.edureka.co/testing-with-selenium-webdriver”); driver.navigate().back(); driver.navigate().refresh(); driver.wait(5000); // or use // Thread.sleep(5000); driver.findElement(By.name("email")).sendKeys("[email protected]"); driver.findElement(By.name("pass")).sendKeys("xxxxxx"); driver.findElement(By.id("u_0_q")).click(); driver.quit(); } } Khi bạn thay thế thông tin đăng nhập bằng email và mật khẩu thực của mình và thực thi mã này, thì Facebook sẽ mở trong một cửa sổ mới, hãy nhập thông tin đăng nhập và đăng nhập vào tài khoản của bạn thì đấy. Bạn đã đăng nhập thành công, có nghĩa là mã hoàn chỉnh của bạn đã được thực thi hoàn toàn Tôi đã sử dụng các thuộc tính ID và Name để định vị các phần tử. Trên thực tế, bạn có thể sử dụng bất kỳ công cụ định vị nào khác để tìm các phần tử. XPath là kỹ thuật định vị hữu ích và quan trọng nhất. Tuy nhiên, miễn là bạn có thể tìm thấy ngay cả một trong các thuộc tính và sử dụng chúng để định vị các phần tử, bạn sẽ ổn thôi. Bạn có thể xem video dưới đây được cung cấp bởi một chuyên gia trong ngành, nơi cô ấy đã thực hành tất cả các tính năng được đề cập ở trên của Selenium WebDriver Hướng dẫn Selenium WebDriver. Hướng dẫn Selenium cho người mới bắt đầu. Đào tạo Selenium WebDriver. EdurekaHướng dẫn Selenium WebDriver này nói về những hạn chế của Selenium RC và nhu cầu về Selenium WebDriver là gì. Nó đi vào chi tiết về những ưu điểm mà WebDriver có được so với RC và cách nó thay thế RC để thử nghiệm tự động hóa Blog tiếp theo của tôi trong loạt bài hướng dẫn về Selenium này là về cách sử dụng TestNG cùng với Selenium WebDriver. Tôi khuyên bạn nên đọc nó vì nó nói về cách khắc phục những hạn chế của WebDriver (quản lý trường hợp thử nghiệm và tạo báo cáo) bằng cách sử dụng TestNG Nếu bạn gặp bất kỳ sự cố nào khi thực thi mã có trong blog này hoặc nếu bạn có bất kỳ câu hỏi nào khác, hãy đặt chúng vào phần nhận xét bên dưới và chúng tôi sẽ liên hệ lại với bạn ngay Nếu bạn muốn học Selenium và xây dựng sự nghiệp trong lĩnh vực thử nghiệm, thì hãy xem Chương trình đào tạo chứng chỉ Selenium trực tuyến, tương tác của chúng tôi tại đây, đi kèm với hỗ trợ 24*7 để hướng dẫn bạn trong suốt thời gian học tập Có một câu hỏi cho chúng tôi? |