Jumat, 03 Mei 2024

Lazarus - Chrome Driver


Download :
Google Chrome 114
ChromeDriver 114
Unit Library Lazarus - Jurrasic Pork
Unit Library Lazarus - modif bpi

*Unit Library Lazarus modif by bpi adalah modifikasi unit dari Jurrasic Pork , karena terjadi kebocoran memory (memory leak)

Link Refrensi:
Library untuk delphi
Library untuk Lazarus
Elements
Command
Keyword
Sintax XPath
W3C WebDriver
WebDriver Actions


Sintax XPath
XPath dapat digunakan untuk mendapatkan object/element yg tidak memiliki id , biasanya identifikasi menggunakan class name dan terdapat element dengan nama class yg sama sehingga object tersebut dinamakan Elements sedangkan jika object tersebut tunggal disebut Element.

 Xpath =//tagname[@Attribute="value"] 

Keterangan
//         = Digunakan untuk memilih node saat ini.
tagname  = Nama tag dari node tertentu.
@         = Digunakan untuk memilih atribut
Attribute = Nama atribut node.
Value  = Nilai atribut > harus diapit tanda petikdua (") 

Contoh pemakaian
Uses
WebDriver4L; 

Var
  Robot : TWebDriver;
  SessionID:String;
  Obj:TWebElement;
  Objs:TWebElements;     
  URL:String;

Inisialisasi
  Robot := TChromeDriver.Create(nil);
  Robot.StartDriver(AppFolder+'chromedriver.exe');     

FreeMemory
  if Robot<>nil then
  begin
    Robot.DeleteSession(SessionID);
    Robot.Quit;
    Robot.Free;
  end; 

NewSession
  SessionID:=Robot.NewSession;
  eSessionID.Text:=SessionID;
  Robot.Implicitly_Wait(2000);

OpenURL
Robot.GetURL(URL);  

Command akses element yg sering digunakan
Obj:=Robot.FindElementByID(eKey.Text); 
Obj:=Robot.FindElementByTag(eKey.Text); 
Obj:=Robot.FindElementByClassName(eKey.Text);
Objs:=Robot.FindElementsByTag(eKey.Text); 
Objs:=Robot.FindElementsByXPath(eKey.Text); 

Catatan :
-Untuk menggunakan lazarus dengan ChromeDriver , versi Browser Chrome dengan ChromeDriver harus sama
-Element dan Elements adalah object berbeda , Element=tunggal , Elements=jamak
-percobaan Chrome 114, tidak support FindElementsByClassName
-pencarian informasi ; 5/5/2024 belum ketemu fungsi untuk mouseover/mousemove ke chromedriver
beberapa komentar menyatakan chromedriver tidak support mousemove melalui protokol W3C