HTMLUnitDriver trong Selenium

Trรฌnh duyแป‡t khรดng giao diแป‡n (headless browser) lร  trรฌnh duyแป‡t web khรดng cรณ giao diแป‡n ngฦฐแปi dรนng ฤ‘แป“ hแปa. Nรณ cรณ thแปƒ chแบกy ngแบงm mร  khรดng cแบงn hiแปƒn thแป‹ hรฌnh แบฃnh.tracNรณ cung cแบฅp mแป™t cรกch hiแป‡u quแบฃ ฤ‘แปƒ kiแปƒm thแปญ cรกc แปฉng dแปฅng web ฤ‘แป“ng thแปi tiแบฟt kiแป‡m thแปi gian vร  tร i nguyรชn. Trong hฦฐแป›ng dแบซn nร y, chรบng ta sแบฝ tรฌm hiแปƒu trรฌnh duyแป‡t khรดng giao diแป‡n lร  gรฌ, khi nร o nรชn sแปญ dแปฅng kiแปƒm thแปญ trรฌnh duyแป‡t khรดng giao diแป‡n vร  cรกch thแปฑc hiแป‡n nรณ. Selenium.

Trรฌnh duyแป‡t khรดng ฤ‘แบงu lร  gรฌ?

Trรฌnh duyแป‡t khรดng ฤ‘แบงu lร  trรฌnh duyแป‡t web khรดng cรณ giao diแป‡n ngฦฐแปi dรนng ฤ‘แป“ hแปa. Chฦฐฦกng trรฌnh nร y sแบฝ hoแบกt ฤ‘แป™ng giแป‘ng nhฦฐ mแป™t trรฌnh duyแป‡t nhฦฐng sแบฝ khรดng hiแปƒn thแป‹ bแบฅt kแปณ GUI nร o.

Mแป™t sแป‘ vรญ dแปฅ vแป Trรฌnh ฤ‘iแปu khiแปƒn khรดng ฤ‘แบงu bao gแป“m

  • ฤฦกn vแป‹ Html
  • Ma
  • PhantomJS
  • ZombieJS
  • Watir-webdriver

Khi nร o nรชn sแปญ dแปฅng kiแปƒm tra trรฌnh duyแป‡t khรดng ฤ‘แบงu?

Trong thแปi ฤ‘แบกi kแปน thuแบญt sแป‘ ngร y nay, cรกc แปฉng dแปฅng web ฤ‘ฦฐแปฃc phรกt triแปƒn ฤ‘แปƒ tฦฐฦกng thรญch vแป›i nhiแปu thiแบฟt bแป‹ vร  nแปn tแบฃng khรกc nhau. ฤiแปu nร y thฦฐแปng ฤ‘แบทt ra thรกch thแปฉc cho cรกc nhร  phรกt triแปƒn trang web, nhแปฏng ngฦฐแปi cแบงn ฤ‘แบฃm bแบฃo cรกc แปฉng dแปฅng cแปงa hแป hoแบกt ฤ‘แป™ng liแปn mแบกch trรชn cรกc nแปn tแบฃng nร y. Kiแปƒm thแปญ trรฌnh duyแป‡t khรดng ฤ‘แบงu lร  giแบฃi phรกp lรฝ tฦฐแปŸng cho vแบฅn ฤ‘แป nร y vรฌ nรณ cho phรฉp cรกc nhร  phรกt triแปƒn kiแปƒm thแปญ cรกc แปฉng dแปฅng web cแปงa hแป mร  khรดng cแบงn giao diแป‡n ngฦฐแปi dรนng ฤ‘แป“ hแปa. Bแบฑng cรกch sแปญ dแปฅng kiแปƒm thแปญ trรฌnh duyแป‡t khรดng ฤ‘แบงu, cรกc nhร  phรกt triแปƒn cรณ thแปƒ dแป… dร ng kiแปƒm thแปญ cรกc แปฉng dแปฅng web phแปฉc tแบกp vแป›i nhiแปu thร nh phแบงn vร  phแปฅ thuแป™c, mแปŸ ฤ‘ฦฐแปng cho quรก trรฌnh phรกt triแปƒn nhanh hฦกn, mรฃ khรดng cรณ lแป—i vร  ngฦฐแปi dรนng hร i lรฒng.

Kiแปƒm tra trรฌnh duyแป‡t khรดng ฤ‘แบงu vแป›i Selenium

Selenium lร  mแป™t cรดng cแปฅ mแบกnh mแบฝ ฤ‘แปƒ kiแปƒm tra trรฌnh duyแป‡t khรดng cรณ giao diแป‡n ngฦฐแปi dรนng, cho phรฉp cรกc nhร  phรกt triแปƒn chแบกy cรกc bร i kiแปƒm tra tแปฑ ฤ‘แป™ng mร  khรดng cแบงn giao diแป‡n ngฦฐแปi dรนng cรณ thแปƒ nhรฌn thแบฅy. Bแบฑng cรกch chแบกy cรกc bร i kiแปƒm tra แปŸ chแบฟ ฤ‘แป™ nแปn, Selenium cรณ thแปƒ tiแบฟt kiแป‡m thแปi gian vร  nguแป“n lแปฑc ฤ‘แป“ng thแปi giรบp รญchping Xรกc ฤ‘แป‹nh cรกc vแบฅn ฤ‘แป cรณ thแปƒ khรดng rรต rร ng trong mรดi trฦฐแปng kiแปƒm thแปญ dแปฑa trรชn giao diแป‡n ngฦฐแปi dรนng truyแปn thแป‘ng. ฤiแปu nร y bao gแป“m cรกc vแบฅn ฤ‘แป liรชn quan ฤ‘แบฟn hiแป‡u suแบฅt vร  cรกc vแบฅn ฤ‘แป vแป bแป‘ cแปฅc mร  chแป‰ cรณ thแปƒ trแปŸ nรชn rรต rร ng trong mรดi trฦฐแปng khรดng cรณ giao diแป‡n ngฦฐแปi dรนng. Tuy nhiรชn, ฤ‘iแปu quan trแปng lร  phแบฃi ghi nhแป› nhแปฏng hแบกn chแบฟ cแปงa kiแปƒm thแปญ khรดng cรณ giao diแป‡n ngฦฐแปi dรนng vร  cรขn bแบฑng nรณ vแป›i cรกc phฦฐฦกng phรกp dแปฑa trรชn giao diแป‡n ngฦฐแปi dรนng truyแปn thแป‘ng ฤ‘แปƒ ฤ‘แบฃm bแบฃo phแบกm vi kiแปƒm thแปญ toร n diแป‡n.

Cรกc vรญ dแปฅ phแป• biแบฟn vแป trรฌnh duyแป‡t khรดng ฤ‘แบงu

Cรณ rแบฅt nhiแปu trรฌnh duyแป‡t khรดng cรณ giao diแป‡n ngฦฐแปi dรนng, mแป—i trรฌnh duyแป‡t cรณ cรกc tรญnh nฤƒng vร  lแปฃi รญch riรชng, khiแบฟn chรบng phรน hแปฃp vแป›i cรกc trฦฐแปng hแปฃp sแปญ dแปฅng khรกc nhau. Chรบng tรดi thแบฃo luแบญn vแป chรบng dฦฐแป›i ฤ‘รขy: -

PhantomJS

PhantomJS lร  mแป™t trรฌnh duyแป‡t khรดng cรณ giao diแป‡n ngฦฐแปi dรนng sแปญ dแปฅng WebKit lร m cรดng cแปฅ kแบฟt xuแบฅt vร  hแป— trแปฃ nhiแปu tiรชu chuแบฉn web khรกc nhau nhฦฐ HTML5, CSS3 vร  JavaScript. Cรณ thแปƒ dรนng ฤ‘แปƒ chแปฅp mร n hรฌnh vร  tแปฑ ฤ‘แป™ng hรณa cรกc tรกc vแปฅ trang. Script lร  mรฃ nguแป“n mแปŸ vร  tฦฐฦกng thรญch vแป›i nhiแปu hแป‡ ฤ‘iแปu hร nh.

Vรญ dแปฅ vแป Selenium vแป›i PhantomJS khรดng ฤ‘แบงu trong Python

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# Set up PhantomJS options
phantomjs_options = webdriver.DesiredCapabilities.PHANTOMJS.copy()
phantomjs_options['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
# Set up the PhantomJS driver
driver = webdriver.PhantomJS('/path/to/phantomjs', desired_capabilities=phantomjs_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

cฦก rรดm

Chrome lร  trรฌnh duyแป‡t phแป• biแบฟn nhแบฅt trรชn hร nh tinh vร  cลฉng cung cแบฅp tรญnh nฤƒng khรดng cรณ giao diแป‡n ngฦฐแปi dรนng. Nรณ cรณ thแปƒ ฤ‘ฦฐแปฃc sแปญ dแปฅng trรชn nhiแปu nแปn tแบฃng vร  hแป— trแปฃ cรกc ngรดn ngแปฏ vร  khung lแบญp trรฌnh. Cรกc cรดng cแปฅ gแปก lแป—i tรญch hแปฃp vร  tร i liแป‡u mแปŸ rแป™ng giรบp bแบกn dแป… dร ng sแปญ dแปฅng vร  khแบฏc phแปฅc mแปi sแปฑ cแป‘ cรณ thแปƒ phรกt sinh trong quรก trรฌnh thแปญ nghiแป‡m.

Vรญ dแปฅ vแป Chrome khรดng ฤ‘แบงu vแป›i Selenium in Python

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument('--headless')  # Run Chrome in headless mode
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# Set up the Chrome driver
driver = webdriver.Chrome('/path/to/chromedriver', options=chrome_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Firefox

Firefox lร  mแป™t trรฌnh duyแป‡t web phแป• biแบฟn cลฉng cรณ thแปƒ ฤ‘ฦฐแปฃc sแปญ dแปฅng lร m trรฌnh duyแป‡t khรดng cรณ giao diแป‡n ngฦฐแปi dรนng cho mแปฅc ฤ‘รญch thแปญ nghiแป‡m. Mแป™t trong nhแปฏng lแปฃi รญch cแปงa viแป‡c sแปญ dแปฅng Firefox Lร  mแป™t trรฌnh duyแป‡t khรดng cรณ giao diแป‡n ngฦฐแปi dรนng nรชn tรญnh chแบฅt nhแบน cแปงa nรณ khiแบฟn nรณ trแปŸ thร nh mแป™t lแปฑa chแปn linh hoแบกt ฤ‘แปƒ thแปญ nghiแป‡m trรชn nhiแปu hแป‡ ฤ‘iแปu hร nh khรกc nhau. Ngoร i ra, vแป›i tร i liแป‡u phong phรบ vร  sแปฑ hแป— trแปฃ cแปงa cแป™ng ฤ‘แป“ng, Firefox lร  sแปฑ lแปฑa chแปn tuyแป‡t vแปi cho nhแปฏng ai muแป‘n thแปญ nghiแป‡m cรดng nghแป‡ trรฌnh duyแป‡t khรดng ฤ‘แบงu.

Vรญ dแปฅ vแป khรดng ฤ‘แบงu Firefox vแป›i Selenium in Python

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# Set up Firefox options
firefox_options = Options()
firefox_options.add_argument('--headless')  # Run Firefox in headless mode
# Set up the Firefox driver
driver = webdriver.Firefox(options=firefox_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

ฦฏu ฤ‘iแปƒm cแปงa viแป‡c kiแปƒm tra trรฌnh duyแป‡t khรดng ฤ‘แบงu

  • Thแปฑc hiแป‡n kiแปƒm tra nhanh hฦกn
  • Thแปญ nghiแป‡m hiแป‡u quแบฃ vแป chi phรญ
  • Phแบกm vi kiแปƒm tra tแป‘t hฦกn
  • Tรญnh linh hoแบกt trong viแป‡c chแบกy thแปญ nghiแป‡m
  • Tรญch hแปฃp vแป›i ฤ‘ฦฐแปng แป‘ng CI/CD

Nhฦฐแปฃc ฤ‘iแปƒm cแปงa viแป‡c kiแปƒm tra trรฌnh duyแป‡t khรดng ฤ‘แบงu

  • Thiแบฟu GUI
  • Khรณ khฤƒn trong viแป‡c gแปก lแป—i
  • Hแป— trแปฃ trรฌnh duyแป‡t hแบกn chแบฟ

Trรฌnh ฤ‘iแปu khiแปƒn HTMLUnit

HTML UnitDriver lร  trรฌnh duyแป‡t khรดng ฤ‘แบงu triแปƒn khai nhanh nhแบฅt vร  nhแบน nhแบฅt dร nh cho WebDriver. Nรณ dแปฑa trรชn HtmlUnit. Nรณ ฤ‘ฦฐแปฃc biแบฟt ฤ‘แบฟn nhฦฐ Trรฌnh ฤ‘iแปu khiแปƒn trรฌnh duyแป‡t khรดng ฤ‘แบงu. Nรณ giแป‘ng nhฦฐ Chrome, IE hoแบทc FireFox trรฌnh ฤ‘iแปu khiแปƒn, nhฦฐng nรณ khรดng cรณ GUI nรชn ngฦฐแปi ta khรดng thแปƒ thแบฅy quรก trรฌnh thแปฑc hiแป‡n kiแปƒm tra trรชn mร n hรฌnh.

Cรกc tรญnh nฤƒng cแปงa trรฌnh ฤ‘iแปu khiแปƒn ฤ‘ฦกn vแป‹ HTML

  • Hแป— trแปฃ cรกc giao thแปฉc HTTPS vร  HTTP
  • Hแป— trแปฃ phแบฃn hแป“i HTML (nhแบฅp vร o liรชn kแบฟt, gแปญi biแปƒu mแบซu, xem mรด hรฌnh DOM cแปงa tร i liแป‡u HTML, v.v.)
  • Hแป— trแปฃ cookie
  • Hแป— trแปฃ mรกy chแปง proxy
  • Hแป— trแปฃ xรกc thแปฑc cฦก bแบฃn vร  NTLM
  • Xuแบฅt sแบฏc JavaScript hแป— trแปฃ
  • Hแป— trแปฃ cรกc phฦฐฦกng thแปฉc gแปญi GET vร  POST
  • Khแบฃ nฤƒng tรนy chแป‰nh cรกc tiรชu ฤ‘แป yรชu cแบงu ฤ‘ฦฐแปฃc gแปญi ฤ‘แบฟn mรกy chแปง
  • Khแบฃ nฤƒng xรกc ฤ‘แป‹nh xem cรกc phแบฃn hแป“i khรดng thร nh cรดng tแปซ mรกy chแปง sแบฝ ฤ‘ฦฐa ra ngoแบกi lแป‡ hay sแบฝ ฤ‘ฦฐแปฃc trแบฃ vแป dฦฐแป›i dแบกng cรกc trang thuแป™c loแบกi thรญch hแปฃp

Cรกc bฦฐแป›c sแปญ dแปฅng Trรฌnh ฤ‘iแปu khiแปƒn HTMLUnit vแป›i Selenium

Bฦฐแป›c 1) In Eclipse, sao chรฉp mรฃ sau. Thรชm cรกc tแป‡p thฦฐ viแป‡n selenium chuแบฉn vร o dแปฑ รกn. Khรดng cแบงn thรชm tแป‡p jar nร o nแปฏa.

package  htmldriver;
import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;	
import org.openqa.selenium.htmlunit.HtmlUnitDriver;		
public class htmlUnitYest {				
		public static void main(String[] args) {
                     // Creating a new instance of the HTML unit driver
                      
                     WebDriver driver = new HtmlUnitDriver();
                      
           		     // Navigate to Google		
                     driver.get("http://www.google.com");					
          
					 // Locate the searchbox using its name		
                     WebElement element = driver.findElement(By.name("q"));	
                     
                    // Enter a search query		
                    element.sendKeys("Guru99");	
                   
		            // Submit the query. Webdriver searches for the form using the text input element automatically		
                    // No need to locate/find the submit button		
                    element.submit();			
                    
            		// This code will print the page title		
                    System.out.println("Page title is: " + driver.getTitle());		
                    
                    driver.quit();			
         }		
}

Bฦฐแป›c 2) Chแบกy mรฃ. Bแบกn sแบฝ quan sรกt thแบฅy khรดng cรณ trรฌnh duyแป‡t nร o ฤ‘ฦฐแปฃc khแปŸi chแบกy vร  kแบฟt quแบฃ ฤ‘ฦฐแปฃc hiแปƒn thแป‹ trong bแบฃng ฤ‘iแปu khiแปƒn.

Cรกc bฦฐแป›c ฤ‘แปƒ sแปญ dแปฅng Trรฌnh ฤ‘iแปu khiแปƒn HTMLUnit vแป›i Selenium

Lแปฃi รญch cแปงa Trรฌnh ฤ‘iแปu khiแปƒn ฤ‘ฦกn vแป‹ Html:

  • Vรฌ nรณ khรดng sแปญ dแปฅng bแบฅt kแปณ GUI nร o ฤ‘แปƒ kiแปƒm tra nรชn cรกc bร i kiแปƒm tra cแปงa bแบกn sแบฝ chแบกy แปŸ chแบฟ ฤ‘แป™ nแปn mร  khรดng cรณ bแบฅt kแปณ giรกn ฤ‘oแบกn trแปฑc quan nร o
  • So vแป›i tแบฅt cแบฃ cรกc phiรชn bแบฃn khรกc, viแป‡c thแปฑc thi nhanh hฦกn
  • ฤแปƒ chแบกy thแปญ nghiแป‡m thรดng qua trรฌnh ฤ‘iแปu khiแปƒn HtmlUnit, bแบกn cลฉng cรณ thแปƒ chแปn cรกc phiรชn bแบฃn trรฌnh duyแป‡t khรกc
  • Nรณ ฤ‘แป™c lแบญp vแป›i nแปn tแบฃng vร  dแป… dร ng hฦกn ฤ‘แปƒ chแบกy nhiแปu thแปญ nghiแป‡m ฤ‘แป“ng thแปi. Lรฝ tฦฐแปŸng cho Kiแปƒm tra Tแบฃi.

Hแบกn chแบฟ:

  • Nรณ khรดng thแปƒ mรด phแปng cรกc trรฌnh duyแป‡t khรกc JavaHร nh vi kแป‹ch bแบฃn

PhantomJS

PhantomJS lร  mแป™t trรฌnh duyแป‡t khรดng cรณ ฤ‘แบงu vแป›i JavaScript API. ฤรขy lร  giแบฃi phรกp tแป‘i ฦฐu cho viแป‡c Kiแปƒm tra trang web khรดng cรณ giao diแป‡n, truy cแบญp vร  thao tรกc cรกc trang web vร  ฤ‘i kรจm vแป›i DOM API chuแบฉn.

ฤแปƒ sแปญ dแปฅng PhantomJS vแป›i Seleniun, ngฦฐแปi ta phแบฃi sแปญ dแปฅng GhostDriver. GhostDriver lร  viแป‡c triแปƒn khai giao thแปฉc Webdriver Wire trong JS ฤ‘ฦกn giแบฃn cho PhantomJS.

Phiรชn bแบฃn mแป›i nhแบฅt cแปงa PhatomJS ฤ‘รฃ tรญch hแปฃp GhostDriver vร  khรดng cแบงn phแบฃi cร i ฤ‘แบทt riรชng.

ฤรขy lร  cรกch hแป‡ thแป‘ng hoแบกt ฤ‘แป™ng-

PhantomJS

Cรกc bฦฐแป›c ฤ‘แปƒ chแบกy Selenium vแป›i PhatomJS

Bฦฐแป›c 1) Bแบกn cแบงn Eclipse vแป›i Selenium cร i ฤ‘แบทt

Bฦฐแป›c 2) Tแบฃi xuแป‘ng PhantomJS ฤ‘รขy

Cรกc bฦฐแป›c ฤ‘แปƒ chแบกy Selenium Vแป›i PhatomJS

Bฦฐแป›c 3) ExtracSao chรฉp thฦฐ mแปฅc ฤ‘รฃ tแบฃi xuแป‘ng vร o thฦฐ mแปฅc Program Files.

Cรกc bฦฐแป›c ฤ‘แปƒ chแบกy Selenium Vแป›i PhatomJS

Bฦฐแป›c 4) Tแบฃi xuแป‘ng Trรฌnh ฤ‘iแปu khiแปƒn PhantomJS tแปซ ฤ‘รขy. Thรชm bรฌnh vร o dแปฑ รกn cแปงa bแบกn

Cรกc bฦฐแป›c ฤ‘แปƒ chแบกy Selenium Vแป›i PhatomJS

Bฦฐแป›c 5) Dรกn ฤ‘oแบกn mรฃ sau vร o eclipse

package htmldriver;	
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;	

public class phantom {				
		public static void main(String[] args) {
        	        File file = new File("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe");				
                    System.setProperty("phantomjs.binary.path", file.getAbsolutePath());		
                    WebDriver driver = new PhantomJSDriver();	
                    driver.get("http://www.google.com");         
                    WebElement element = driver.findElement(By.name("q"));	
                    element.sendKeys("Guru99");					
                    element.submit();         			
                    System.out.println("Page title is: " + driver.getTitle());		
                    driver.quit();			
           }		
}

Bฦฐแป›c 6) Chแบกy mรฃ. Bแบกn sแบฝ quan sรกt kแบฟt quแบฃ ฤ‘แบงu ra ฤ‘ฦฐแปฃc hiแปƒn thแป‹ trong bแบฃng ฤ‘iแปu khiแปƒn vร  khรดng cรณ trรฌnh duyแป‡t nร o ฤ‘ฦฐแปฃc khแปŸi chแบกy.

LฦฏU ร: แปž lแบงn chแบกy ฤ‘แบงu tiรชn, dแปฑa trรชn cร i ฤ‘แบทt cแปงa bแบกn, bแบกn cรณ thแปƒ nhแบญn ฤ‘ฦฐแปฃc cแบฃnh bรกo bแบฃo mแบญt tแปซ Windows ฤ‘แปƒ cho phรฉp chแบกy PhantomJS. Bแบฅm vร o Cho phรฉp truy cแบญp.

Cรกc bฦฐแป›c ฤ‘แปƒ chแบกy Selenium Vแป›i PhatomJS

Nhiแปu tแป• chแปฉc sแปญ dแปฅng Phantom.JS cho nhiแปu mแปฅc ฤ‘รญch khรกc nhau, chแบณng hแบกn nhฦฐ

  • Thแปญ nghiแป‡m khรดng ฤ‘แบงu
  • Chแปฅp mร n hรฌnh
  • Tแปฑ ฤ‘แป™ng hรณa trang
  • Giรกm sรกt mแบกng
  • ฤแปƒ hiแปƒn thแป‹ แบฃnh chแปฅp mร n hรฌnh trang tแป•ng quan cho ngฦฐแปi dรนng cแปงa hแป
  • ฤแปƒ chแบกy thแปญ nghiแป‡m ฤฦกn vแป‹ trรชn dรฒng lแป‡nh
  • ฤแปƒ tแบกo sแป• tay nhรขn viรชn tแปซ HTML sang PDF
  • Kแบฟt hแปฃp vแป›i QUnit cho bแป™ thแปญ nghiแป‡m

Tแป•ng kแบฟt

ฤแปƒ kiแปƒm tra แปฉng dแปฅng nhanh chรณng trรชn nhiแปu trรฌnh duyแป‡t khรกc nhau vร  khรดng cรณ bแบฅt kแปณ giรกn ฤ‘oแบกn trแปฑc quan nร o, trรฌnh duyแป‡t khรดng ฤ‘แบงu Kiแปƒm tra ฤ‘ฦฐแปฃc sแปญ dแปฅng. Do tแป‘c ฤ‘แป™, ฤ‘แป™ chรญnh xรกc vร  cรกc tรญnh nฤƒng dแป… truy cแบญp, trรฌnh ฤ‘iแปu khiแปƒn ฤ‘ฦกn vแป‹ HTML vร  PhantomJS ฤ‘ang ngร y cร ng phแป• biแบฟn trong thแปญ nghiแป‡m tแปฑ ฤ‘แป™ng hรณa trรฌnh duyแป‡t khรดng ฤ‘แบงu. Bแบฑng cรกch lร m theo mแป™t sแป‘ bฦฐแป›c ฤ‘ฦกn giแบฃn, bแบกn sแบฝ biแบฟt ฤ‘ฦฐแปฃc cรกc cรดng cแปฅ nร y cรณ thแปƒ dแป… dร ng tรญch hแปฃp vแป›i cรกc cรดng cแปฅ khรกc nhฦฐ thแบฟ nร o vร  cรณ thแปƒ thแปฑc thi mรฃ thแปญ nghiแป‡m.

Tรณm tแบฏt bร i viแบฟt nร y vแป›i: