ตัวเลือก Chrome และความสามารถที่ต้องการใน Selenium

⚡ สรุปอย่างชาญฉลาด

ตัวเลือก Chrome และความสามารถที่ต้องการใน Selenium WebDriver ควบคุมวิธีการเปิดและการทำงานของเบราว์เซอร์ Chrome ระหว่างการทดสอบอัตโนมัติ โดยจะกำหนดค่าอาร์กิวเมนต์ ส่วนขยาย การจัดการ SSL และการตั้งค่าข้ามเบราว์เซอร์ ทำให้การทดสอบมีความยืดหยุ่น ทำซ้ำได้ และพร้อมใช้งาน Selenium การประมวลผลแบบกริด

  • 🌐 ตัวเลือก Chrome: ปรับแต่งเซสชันด้วยพารามิเตอร์ต่างๆ เช่น เริ่มแบบเต็มหน้าจอ โหมดไม่ระบุตัวตน และโหมดไร้ส่วนหัว
  • ⚙️ ความสามารถที่ต้องการ: ตั้งค่าชื่อเบราว์เซอร์ แพลตฟอร์ม เวอร์ชัน และการยอมรับใบรับรอง SSL
  • 🧩 ส่วนขยาย: โหลดไฟล์ CRX ผ่านระบบอัตโนมัติแทนการติดตั้งด้วยตนเอง
  • 🇧🇷 ปลอมตัวและไร้หัว: โค้ดที่นำกลับมาใช้ซ้ำได้จะเรียกใช้เซสชันส่วนตัวหรือเซสชันเบื้องหลังสำหรับไปป์ไลน์ CI
  • 🖥️ Selenium กริด: ความสามารถเหล่านี้ช่วยให้สามารถดำเนินการทดสอบแบบกระจายบนเบราว์เซอร์ต่างๆ ได้
  • ⚠️ Selenium หมายเหตุปี 4: DesiredCapabilities นั้นเลิกใช้งานแล้ว โปรดส่ง ChromeOptions ไปยังไดรเวอร์โดยตรง

ตัวเลือก Chrome และความสามารถที่ต้องการใน Selenium ไดรเวอร์เว็บ

Chrome Options Class คืออะไร

การขอ คลาส Chromeoptions เป็นแนวคิดใน Selenium WebDriver สำหรับจัดการคุณสมบัติต่างๆ ของไดรเวอร์ Chrome โดยทั่วไปคลาสตัวเลือก Chrome จะใช้ร่วมกับ Desired Capabilities เพื่อปรับแต่งเซสชันไดรเวอร์ Chrome ช่วยให้คุณสามารถดำเนินการต่างๆ เช่น เปิด Chrome ในโหมดขยายใหญ่ ปิดใช้งานส่วนขยายที่มีอยู่ ปิดใช้งานป๊อปอัป เป็นต้น

ตัวอย่าง:

ตัวอย่างด้านล่างแสดงวิธีการเปิดเบราว์เซอร์ Chrome ในโหมดขยายใหญ่สุดโดยใช้คลาส ChromeOptions เราจำเป็นต้องส่งอินสแตนซ์ของคลาส ChromeOptions ไปยังการเริ่มต้นไดรเวอร์เว็บ

ChromeOptions options = new ChromeOptions()
options.addArgument("start-maximized");
ChromeDriver driver = new ChromeDriver(options);

ด้านล่างนี้คือรายการอาร์กิวเมนต์ที่มีอยู่และใช้บ่อยที่สุดสำหรับคลาส ChromeOptions

  • เริ่มต้นสูงสุด: เปิด Chrome ในโหมดขยายใหญ่สุด
  • ไม่ระบุตัวตน: เปิด Chrome ในโหมดไม่ระบุตัวตน
  • หัวขาด: เปิด Chrome ในโหมดไม่มีหัว
  • ปิดการใช้งานส่วนขยาย: ปิดการใช้งานส่วนขยายที่มีอยู่ในเบราว์เซอร์ Chrome
  • ปิดใช้งานการบล็อกป๊อปอัป: ปิดใช้งานป๊อปอัปที่แสดงบนเบราว์เซอร์ Chrome
  • ทำให้เบราว์เซอร์เริ่มต้น: ทำให้เบราว์เซอร์เริ่มต้นของ Chrome
  • รุ่น: พิมพ์เวอร์ชันเบราว์เซอร์ Chrome
  • ปิดการใช้งานแถบข้อมูล: ป้องกันไม่ให้ Chrome แสดงการแจ้งเตือน 'Chrome ถูกควบคุมโดยซอฟต์แวร์อัตโนมัติ

คลาสความสามารถที่ต้องการ

ระดับความสามารถที่ต้องการ ใช้เพื่อแก้ไขคุณสมบัติหลายประการของไดรเวอร์เว็บ โดยจัดเตรียมคู่คีย์-ค่าเพื่อเปลี่ยนคุณสมบัติแต่ละรายการของไดรเวอร์เว็บ เช่น ชื่อเบราว์เซอร์ แพลตฟอร์มเบราว์เซอร์ ฯลฯ วิธีการทั่วไปของคลาส Desired Capabilities คือวิธี setCapability ส่วนใหญ่จะใช้กับ Selenium ตาราง ซึ่งต้องใช้กรณีทดสอบเดียวกันบนเบราว์เซอร์ที่แตกต่างกัน

ตัวอย่าง:

ตัวอย่างด้านล่างแสดงวิธีการเปิดใช้งานเบราว์เซอร์ Chrome เพื่อยอมรับใบรับรอง SSL บนเว็บไซต์โดยค่าเริ่มต้นโดยใช้ความสามารถที่ต้องการสำหรับคลาส Chrome

// Create an object of desired capabilities class with Chrome driver
DesiredCapabilities SSLCertificate = DesiredCapabilities.chrome();
// Set the pre defined capability – ACCEPT_SSL_CERTS value to true
SSLCertificate.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
// Open a new instance of chrome driver with the desired capability
WebDriver driver = new ChromeDriver(SSLCertificate);

ด้านล่างนี้คือประเภทความสามารถที่กำหนดไว้ล่วงหน้าที่ใช้บ่อยที่สุด

ชื่อความสามารถ Descriptไอออน
ยอมรับ_SSL_CERTS คุณสมบัตินี้บอกให้เบราว์เซอร์ยอมรับใบรับรอง SSL ตามค่าเริ่มต้น
PLATFORM_NAME คุณสมบัตินี้ใช้เพื่อตั้งค่าแพลตฟอร์มระบบปฏิบัติการที่ใช้ในการเข้าถึงเว็บไซต์
เบราว์เซอร์_NAME คุณสมบัตินี้ใช้เพื่อตั้งชื่อเบราว์เซอร์สำหรับอินสแตนซ์ไดรเวอร์เว็บ
VERSION คุณสมบัตินี้ใช้ในการตั้งค่าเวอร์ชันของเบราว์เซอร์

ตัวเลือก Chrome สำหรับส่วนขยาย Adblocker

ส่วนขยาย Adblocker ของเบราว์เซอร์ Chrome สามารถจัดการได้โดยใช้ ChromeDriver Options และ Desired Capabilities class ด้านล่างนี้เป็นขั้นตอนในการเข้าถึง AdBlockส่วนขยายบนเบราว์เซอร์ Chrome โดยใช้คลาส Desired Capabilities

ขั้นตอน 1) AdBlockต้องติดตั้งส่วนขยาย er บนเบราว์เซอร์ Chrome ก่อนที่จะใช้คลาสตัวเลือก Chrome

ขั้นตอน 2) Extracไฟล์ CRX ที่สอดคล้องกับ AdBlockส่วนขยาย er ผ่านทาง http://crxextracทอร์.คอม/

ขั้นตอน 3) ส่งเส้นทางไฟล์ CRX ที่ดาวน์โหลดไปยังคลาสตัวเลือก Chrome

ขั้นตอน 4) สร้างอินสแตนซ์ของไดรเวอร์เว็บโดยใช้คลาสความสามารถที่ต้องการและตัวเลือก Chrome ใน Selenium วัตถุ

ตัวอย่าง:

ตัวอย่างด้านล่างสาธิตวิธีเปิดใช้งานส่วนขยายตัวบล็อกโฆษณาบนเบราว์เซอร์ Chrome โดยใช้คลาสตัวเลือก Chrome และความสามารถที่ต้องการ

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("Path to CRX File"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

Extracไฟล์ t CRX

ขั้นตอนด้านล่างนี้แสดงให้เห็นถึงกระบวนการของตัวอย่างtracดาวน์โหลดไฟล์ CRX ผ่านโปรแกรมบล็อกโฆษณาทางเว็บไซต์ – http://crxextractor.com/

ขั้นตอน 1) ไปที่ http://crxextractor.com/ และคลิกปุ่มเริ่ม

Extracไฟล์ t CRX

ขั้นตอน 2) เสียบส่วนขยาย Chrome – Ad Blocker URL ใต้ช่องข้อความ URL สำหรับ Adblock บน Chrome web store คือ https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom

และคลิกตกลง

Extracไฟล์ t CRX

ขั้นตอน 3) เมื่อคลิกปุ่ม OK ป้ายของปุ่มจะเปลี่ยนเป็น Get .CRX ดังภาพด้านล่าง คลิกที่ปุ่มรับ .CRX ไฟล์ CRX ที่เกี่ยวข้องกับนามสกุลจะถูกดาวน์โหลด

Extracไฟล์ t CRX

ขั้นตอน 4) บันทึกไฟล์ลงในเครื่องท้องถิ่น จดบันทึกเส้นทางที่บันทึกไว้ ขั้นตอนต่อไปคือการส่งเส้นทางที่บันทึกไว้ไปยังคลาสตัวเลือก Chrome

ตัวอย่าง Code:

  1. คุณจะเห็นโฆษณาที่ https://demo.guru99.com/ ดังต่อไปนี้

Extracไฟล์ t CRX

  1. ด้วยระบบเส้นทาง AdBlockส่วนขยายที่เปิดใช้งานบนโฆษณาเบราว์เซอร์ Chrome ควรปิดใช้งาน
package adblock;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class AdblockDemo {
public static void main(String[] args)  {
	
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");		
	ChromeOptions options = new ChromeOptions();
	options.addExtensions(new File("X://extension_3_40_1_0.crx")); 
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);
	driver.get("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();
	//driver.quit();
	}
	
}

Code คำอธิบาย:

  1. ในตอนแรก คุณต้องกำหนดเส้นทางไปยังไฟล์ chromedriver.exe โดยใช้วิธี set property เนื่องจากคุณใช้เบราว์เซอร์ Chrome ในการทดสอบ
  2. คุณต้องกำหนดเส้นทางไปยังไฟล์ CRX เพื่อเพิ่มวิธีการขยาย
  3. จากนั้นคุณจะต้องสร้างออบเจ็กต์ของ Chrome Desired Capabilities Selenium คลาสและส่งต่อไปยังอินสแตนซ์ไดรเวอร์เว็บ จาก Selenium เวอร์ชัน 3.8.1 คลาสความสามารถของไดรเวอร์เลิกใช้แล้ว และคุณต้องรวมวัตถุความสามารถเข้ากับวัตถุตัวเลือก Chrome ก่อนที่จะส่งผ่านอาร์กิวเมนต์เดียวกันกับตัวสร้างไดรเวอร์ Chrome
  4. เปิด URL - https://demo.guru99.com/test/simple_context_menu.html โดยเปิดใช้งานส่วนขยาย Ad Blocker
  5. ขยายใหญ่สุดและปิดเบราว์เซอร์

หมายเหตุ: เรากำลังเปิดใช้งาน AdBlockเอ้อนามสกุล บนเบราว์เซอร์ Chrome ผ่านสคริปต์อัตโนมัติแทนการเปิดใช้งานส่วนขยาย Adblocker ด้วยตนเองบนเบราว์เซอร์ Chrome ไฟล์ CRX เป็นวิธีการเข้าถึงส่วนขยาย Adblocker โดยใช้สคริปต์อัตโนมัติ

Output:

เบราว์เซอร์ Chrome จะถูกเปิดใช้งานด้วย AdBlockส่วนขยายนี้เปิดใช้งานตามด้านล่างโดยไม่มีโฆษณาใด ๆ

Extracไฟล์ t CRX

นอกเหนือจากการโหลดส่วนขยายแล้ว ChromeOptions ยังควบคุมวิธีการทำงานของหน้าต่างเบราว์เซอร์อีกด้วย

ตัวเลือก Chrome สำหรับโหมดไม่ระบุตัวตน

ตัวเลือก Chrome สามารถใช้สำหรับโหมดไม่ระบุตัวตนได้โดยใช้อาร์กิวเมนต์ที่กำหนดไว้ล่วงหน้า –ไม่ระบุนาม.

ด้านล่างนี้เป็นโค้ดตัวอย่างเพื่อทำสิ่งเดียวกันให้สำเร็จ

ตัวอย่าง Code:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;

public class Incognito{
public static void main(String[] args) {
	// TODO Auto-generated method stub
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
	ChromeOptions options = new ChromeOptions();
	options.addArguments("--incognito");
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);		
	driver.get("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();		
	//driver.quit();
	}
	}

Code คำอธิบาย:

  1. ในตอนแรก คุณต้องกำหนดเส้นทางไปยังไฟล์ chromedriver.exe โดยใช้วิธี set property เนื่องจากคุณใช้เบราว์เซอร์ Chrome ในการทดสอบ
  2. จากนั้นคุณจะต้องสร้างออบเจ็กต์ของคลาส Chrome Options และส่งต่อไปยังอินสแตนซ์ไดรเวอร์เว็บ เนื่องจากเราต้องการเปิดเบราว์เซอร์ Chrome ในโหมดไม่ระบุตัวตน คุณต้องส่งอาร์กิวเมนต์ –ไม่ระบุตัวตน ไปยังคลาสตัวเลือก Chrome
  3. จากนั้น สร้างอ็อบเจ็กต์ของคลาส Desired Capabilities และรวมอ็อบเจ็กต์คลาส Desired Capabilities กับอ็อบเจ็กต์คลาส Chrome Options โดยใช้วิธีการผสาน
  4. คุณต้องสร้างอ็อบเจ็กต์ของคลาส Chrome Driver และส่งผ่านอ็อบเจ็กต์ Chrome Options เป็นอาร์กิวเมนต์
  5. สุดท้ายนี้ เราต้องผ่านด่านนี้ไปให้ได้ URL - https://demo.guru99.com/test/simple_context_menu.html ไปที่วิธี driver.get
  6. ขยายใหญ่สุดและปิดเบราว์เซอร์

Output:

หน้าต่างเบราว์เซอร์ Chrome จะเปิดขึ้นในโหมดไม่ระบุตัวตนดังต่อไปนี้

ตัวเลือก Chrome สำหรับโหมดไม่ระบุตัวตน

ตัวเลือก Chrome สำหรับ Headless Chrome

เบราว์เซอร์แบบไม่มีส่วนหัวจะทำงานอยู่เบื้องหลัง คุณจะไม่เห็น GUI ของเบราว์เซอร์หรือการทำงานต่างๆ ที่เกิดขึ้น

ตัวเลือก Chrome สำหรับการใช้งานเบราว์เซอร์ Chrome ในโหมดหัวขาดสามารถทำได้โดยใช้อาร์กิวเมนต์ที่กำหนดไว้ล่วงหน้า -หัวขาด.

โค้ดตัวอย่างเพื่อให้บรรลุผลตามที่กล่าวไว้ด้านล่าง

ตัวอย่าง:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class HeadlessModeDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
		ChromeOptions options = new ChromeOptions();
		options.addArguments("--headless");
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability(ChromeOptions.CAPABILITY, options);
		options.merge(capabilities);
		ChromeDriver driver = new ChromeDriver(options);		
		driver.get("https://demo.guru99.com/");
		driver.manage().window().maximize();
		String title = driver.getTitle();
		System.out.println("Page Title: " +title);
		driver.quit();
		}


}

Code คำอธิบาย:

  1. ในตอนแรก คุณต้องกำหนดเส้นทางไปยังไฟล์ chromedriver.exe โดยใช้วิธี set property เนื่องจากคุณใช้เบราว์เซอร์ Chrome ในการทดสอบ
  2. จากนั้นสร้างออบเจ็กต์ของคลาส Chrome Options และส่งผ่านไปยังอินสแตนซ์ไดรเวอร์เว็บ เนื่องจากเราต้องการเปิดเบราว์เซอร์ Chrome ในโหมดไม่มีหัว เราจึงต้องส่งอาร์กิวเมนต์ -ไม่มีหัวไปที่คลาสตัวเลือก Chrome
  3. สร้างวัตถุของคลาส DesiredCapabilities Chrome และรวมวัตถุคลาส Desired Capabilities กับวัตถุคลาส Chrome Options โดยใช้วิธีการผสาน
  4. สร้างออบเจ็กต์ของคลาส Chrome Driver และส่งผ่านตัวเลือก Chrome Selenium วัตถุเป็นข้อโต้แย้ง
  5. สุดท้ายนี้ เราต้องผ่านด่านนี้ไปให้ได้ URL - https://demo.guru99.com/ ไปที่วิธี driver.get
  6. พิมพ์ชื่อหน้าและปิดเบราว์เซอร์

เอาท์พุต

เบราว์เซอร์จะไม่ปรากฏให้เห็นสำหรับโค้ดด้านบนเนื่องจาก Chrome จะทำงานในโหมด Headless ชื่อหน้าจะถูกดึงออกมาและแสดงตามด้านล่าง

ตัวเลือก Chrome สำหรับ Chrome ที่ไม่มีหัว

คำถามที่พบบ่อย

ใช่. Selenium 4. เลิกใช้ DesiredCapabilities แล้ว และหันมาใช้คลาส Options ของเบราว์เซอร์แทน เช่น ChromeOptions Selenium 3 คุณได้รวมพวกมันเข้าด้วยกันแล้ว; ใน Selenium 4. คุณส่งค่า ChromeOptions ไปยังไดรเวอร์โดยตรง

เรียกใช้ addArguments โดยระบุแฟล็กหลายตัว เช่น options.addArguments ร่วมกับ start-maximized และ incognito คุณยังสามารถเรียกใช้หลายๆ ครั้งต่อเนื่องกันได้ โดยแต่ละอาร์กิวเมนต์จะปรับแต่งวิธีการเริ่มต้นเซสชัน Chrome

addArguments ส่งผ่านแฟล็กคำสั่งบรรทัด เช่น headless หรือ incognito ไปยัง Chrome ส่วน addExtensions โหลดไฟล์ส่วนขยาย .crx ที่บรรจุไว้ลงในเซสชัน ทั้งสองคำสั่งนี้ช่วยปรับแต่งพฤติกรรม แต่มีจุดประสงค์ที่แตกต่างกัน

ใช่แล้ว ผู้ช่วย AI เช่น Copilot จะสร้างโครงสร้าง ChromeOptions และการตั้งค่าความสามารถ แนะนำชื่ออาร์กิวเมนต์ และอธิบาย API ที่เลิกใช้งานแล้ว โปรดตรวจสอบผลลัพธ์เสมอ เนื่องจากชื่อแฟล็กและ Selenium เวอร์ชันมีการเปลี่ยนแปลงบ่อยครั้ง

เครื่องมือ AI สำหรับแก้ไขปัญหาด้วยตนเองจะอัปเดตอาร์กิวเมนต์โดยอัตโนมัติ ตรวจจับแฟล็กที่ผิดปกติ และแนะนำตัวเลือกทดแทนที่เสถียรหลังจากการอัปเกรด Chrome ช่วยลดภาระการบำรุงรักษาสำหรับการทำงานแบบไร้ส่วนหัว และความไม่สอดคล้องกันของความสามารถในสภาพแวดล้อม CI

ใช่แล้ว ChromeOptions สามารถใช้งานร่วมกับ RemoteWebDriver สำหรับการทำงานแบบ Grid ได้ คุณเพียงแค่แนบตัวเลือกต่างๆ เข้ากับเซสชันระยะไกล ทำให้สามารถใช้งานการตั้งค่าเดียวกันได้บนเครื่องและเบราว์เซอร์ที่กระจายอยู่ทั่วกัน

โดยปกติแล้วหมายความว่าเวอร์ชันของ ChromeDriver และเบราว์เซอร์ Chrome ไม่ตรงกัน ติดตั้ง ChromeDriver ที่ตรงกัน หรือใช้เวอร์ชันที่ตรงกัน Selenium ผู้จัดการใน Selenium 4 เพื่อแก้ไขปัญหาไดรเวอร์โดยอัตโนมัติ

ใช้ตัวเลือกทดลอง: แผนที่การตั้งค่าที่มีไดเร็กทอรีดาวน์โหลดเริ่มต้น (download.default_directory) ส่งผ่านทาง setExperimentalOption จากนั้น Chrome จะบันทึกไฟล์ไปยังโฟลเดอร์นั้นโดยอัตโนมัติระหว่างการทดสอบอัตโนมัติ

สรุปโพสต์นี้ด้วย: