Chrome ব্যবহারকারীদের Chrome এর ডেস্কটপ সংস্করণ থেকে একটি মোবাইল ডিভাইসে Chrome অনুকরণ করার অনুমতি দেয়, Chrome DevTools-এর সাথে ডিভাইস মোড সক্ষম করে৷ এই বৈশিষ্ট্যটি ওয়েব ডেভেলপমেন্টকে ত্বরান্বিত করে, ডেভেলপারদের দ্রুত পরীক্ষা করার অনুমতি দেয় কিভাবে একটি ওয়েবসাইট একটি মোবাইল ডিভাইসে রেন্ডার করে, একটি বাস্তব ডিভাইসের প্রয়োজন ছাড়াই। ChromeDriver একটি অভিধান মান দিয়ে নির্দিষ্ট করা "মোবাইল ইমুলেশন" ক্ষমতা সহ ডিভাইসগুলিকে অনুকরণ করতে পারে৷
DevTools এর মত, ChromeDriver-এ মোবাইল এমুলেশন সক্ষম করার দুটি উপায় রয়েছে:
- একটি পরিচিত ডিভাইস নির্দিষ্ট করুন
- পৃথক ডিভাইস বৈশিষ্ট্য নির্দিষ্ট করুন
"মোবাইল ইমুলেশন" অভিধানের বিন্যাস কোন পদ্ধতির প্রয়োজন তার উপর নির্ভর করে।
একটি পরিচিত মোবাইল ডিভাইস নির্দিষ্ট করুন
একটি নির্দিষ্ট ডিভাইসের সাথে ডিভাইস ইমুলেশন সক্ষম করতে, "mobileEmulation" অভিধানে একটি "deviceName" থাকতে হবে। "deviceName" এর মান হিসাবে DevTools এমুলেটেড ডিভাইস সেটিংস থেকে একটি বৈধ ডিভাইসের নাম ব্যবহার করুন।
জাভা
Map<String, String> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceName", "Nexus 5");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
WebDriver driver = new ChromeDriver(chromeOptions);
রুবি
mobile_emulation = { "deviceName" => "Nexus 5" }
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
"chromeOptions" => { "mobileEmulation" => mobile_emulation })
driver = Selenium::WebDriver.for :remote, url: 'http://localhost:4444/wd/hub',
desired_capabilities: caps
পাইথন
from selenium import webdriver
mobile_emulation = { "deviceName": "Nexus 5" }
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities = chrome_options.to_capabilities())
পরিচিত ডিভাইসের উৎস
পরিচিত ডিভাইসের তালিকা DevTools এমুলেশন প্যানেল থেকে তৈরি করা হয়েছে। যাইহোক, আপনি Chrome এর একটি সংস্করণের বিপরীতে ChromeDriver-এর একটি ভিন্ন সংস্করণ ব্যবহার করতে পারেন যাতে ডিভাইসগুলির একটি নতুন বা পুরানো তালিকা রয়েছে৷
আপনি যদি এমন একটি ডিভাইসের নাম চেষ্টা করেন যা ChromeDriver চিনতে পারে না, আপনি একটি ত্রুটি পাবেন: " <your device name>
একটি বৈধ ডিভাইস হতে হবে।" ChromeDriver জানে না এমন একটি ডিভাইস অনুকরণ করতে, পৃথক ডিভাইস মেট্রিক্স ব্যবহার করে মোবাইল এমুলেশন সক্ষম করুন।
পৃথক ডিভাইস বৈশিষ্ট্য নির্দিষ্ট করুন
আপনি পৃথক বৈশিষ্ট্য নির্দিষ্ট করে মোবাইল এমুলেশন সক্ষম করতে পারেন। "মোবাইল ইমুলেশন" অভিধানে deviceMetrics
, clientHints
অভিধান এবং একটি userAgent
স্ট্রিং থাকতে পারে।
নিম্নলিখিত ডিভাইস মেট্রিক্স অবশ্যই "deviceMetrics" অভিধানে উল্লেখ করা উচিত:
- "প্রস্থ" - ডিভাইসের স্ক্রিনের পিক্সেলের প্রস্থ
- "উচ্চতা" - ডিভাইসের স্ক্রিনের পিক্সেলের উচ্চতা
- "pixelRatio" - ডিভাইসের পিক্সেল অনুপাত
- "টাচ" - স্পর্শ ইভেন্টগুলিকে অনুকরণ করতে হবে কিনা৷ মান সত্যে ডিফল্ট হয় এবং সাধারণত বাদ দেওয়া যেতে পারে।
- "মোবাইল" - ব্রাউজারটিকে অবশ্যই মোবাইল ব্যবহারকারী এজেন্ট হিসাবে আচরণ করতে হবে (ওভারলে স্ক্রলবার, অভিযোজন ইভেন্টগুলি নির্গত করা, ভিউপোর্টের সাথে মানানসই বিষয়বস্তু সঙ্কুচিত করা ইত্যাদি)। মান সত্যে ডিফল্ট হয় এবং সাধারণত বাদ দেওয়া যেতে পারে।
"ক্লায়েন্ট হিন্টস" অভিধানে নিম্নলিখিত এন্ট্রি থাকতে পারে:
- "প্ল্যাটফর্ম" - অপারেটিং সিস্টেম। এটি একটি পরিচিত মান হতে পারে ("Android", "Chrome OS", "Chromium OS", "Fuchsia", "Linux", "macOS", "Windows"), যা ক্রোমের দ্বারা প্রত্যাবর্তিত মানের সাথে হুবহু মিলে যায় প্রদত্ত প্ল্যাটফর্ম, অথবা এটি একটি ব্যবহারকারীর সংজ্ঞায়িত মান হতে পারে। এই মান বাধ্যতামূলক.
- "মোবাইল" - ব্রাউজারটি মোবাইল বা ডেস্কটপ রিসোর্স সংস্করণের অনুরোধ করবে কিনা। সাধারণত Android সহ একটি মোবাইল ফোনে চলমান Chrome এই মানটিকে সত্য হিসাবে সেট করে। একটি ট্যাবলেট অ্যান্ড্রয়েড ডিভাইসে Chrome এই মানটিকে মিথ্যাতে সেট করে৷ একটি ডেস্কটপ ডিভাইসে Chrome এই মানটিকে মিথ্যা হিসাবে সেট করে। আপনি একটি বাস্তবসম্মত অনুকরণ নির্দিষ্ট করতে এই তথ্য ব্যবহার করতে পারেন। এই মান বাধ্যতামূলক.
- অবশিষ্ট এন্ট্রিগুলি ঐচ্ছিক এবং বাদ দেওয়া যেতে পারে যদি না সেগুলি পরীক্ষার জন্য প্রাসঙ্গিক হয়:
- "ব্র্যান্ড" - ব্র্যান্ড / প্রধান সংস্করণ জোড়ার তালিকা। যদি বাদ দেওয়া হয় ব্রাউজার তার নিজস্ব মান ব্যবহার করে।
- "fullVersionList" - ব্র্যান্ড/সংস্করণ জোড়ার তালিকা। এটি ব্রাউজারটি তার নিজস্ব মান ব্যবহার করে বাদ দিয়েছে।
- "প্ল্যাটফর্ম সংস্করণ" - OS সংস্করণ। ডিফল্ট খালি স্ট্রিং.
- "মডেল" - ডিভাইস মডেল। ডিফল্ট খালি স্ট্রিং.
- "আর্কিটেকচার" - CPU আর্কিটেকচার। পরিচিত মান হল "x86" এবং "বাহু"। ব্যবহারকারী কোনো স্ট্রিং মান প্রদান করতে বিনামূল্যে. ডিফল্ট খালি স্ট্রিং.
- "bitness" - প্ল্যাটফর্ম বিটনেস। পরিচিত মান হল "32" এবং "64"। ব্যবহারকারী কোনো স্ট্রিং মান প্রদান করতে বিনামূল্যে. ডিফল্ট খালি স্ট্রিং.
- "wow64" - উইন্ডোজ 64-এ উইন্ডোজ 32 এর অনুকরণ। একটি বুলিয়ান মান যা ডিফল্ট করে মিথ্যা।
ChromeDriver নিম্নলিখিত প্ল্যাটফর্মগুলিতে "ক্লায়েন্টহিন্টস" থেকে "ইউজারএজেন্ট" মান অনুমান করতে সক্ষম: "Android", "Chrome OS", "Chromium OS", "Fuchsia", "Linux", "macOS", "Windows"। তাই এই মান বাদ দেওয়া যেতে পারে.
যদি "ক্লায়েন্টহিন্টস" অভিধানটি বাদ দেওয়া হয় (লেগেসি মোড) ChromeDriver "userAgent" থেকে "clientHints" অনুমান করার জন্য যথাসাধ্য চেষ্টা করে। "userAgent" মান বিন্যাসের অভ্যন্তরীণ অস্পষ্টতার কারণে এই বৈশিষ্ট্যটি নির্ভরযোগ্য নয়।
মোবাইল এমুলেশন প্যানেলের অধীনে উপলব্ধ ফোন এবং ট্যাবলেটগুলি DevTools সোর্স কোডে পাওয়া যাবে।
জাভা
Map<String, Object> deviceMetrics = new HashMap<>();
deviceMetrics.put("width", 360);
deviceMetrics.put("height", 640);
deviceMetrics.put("pixelRatio", 3.0);
Map<String, Object> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceMetrics", deviceMetrics);
mobileEmulation.put("userAgent", "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19");
Map<String, Object> clientHints = new HashMap<>();
clientHints.put("platform", "Android");
clientHints.put("mobile", true);
mobileEmulation.put("clientHints", clientHints);
ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation); WebDriver driver = new ChromeDriver(chromeOptions);
রুবি
mobile_emulation = {
"deviceMetrics" => { "width" => 360, "height" => 640, "pixelRatio" => 3.0 },
"userAgent" => "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
"clientHints" => { "platform" => "Android", "mobile" => true}
}
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => mobile_emulation)
driver = Selenium::WebDriver.for :remote, url: 'http://localhost:4444/wd/hub', desired_capabilities: caps
পাইথন
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
mobile_emulation = {
"deviceMetrics": { "width": 360, "height": 640, "pixelRatio": 3.0 },
"userAgent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
"clientHints": {"platform": "Android", "mobile": True} }
chrome_options = Options()
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome(chrome_options = chrome_options)
JSON
সম্পূর্ণ মোবাইল এমুলেশন কনফিগারেশনের উদাহরণ:
"mobileEmulation": {
"userAgent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/111.0.0.0 Mobile Safari/537.36",
"deviceMetrics": {
"mobile": true,
"touch": true,
"width": 412,
"height": 823,
"pixelRatio": 1.75
},
"clientHints": {
"brands": [
{"brand": "Google Chrome", "version": "111"},
{"brand": "Chromium", "version": "111"}
],
"fullVersionList": [
{"brand": "Google Chrome", "version": "111.0.5563.64"},
{"brand": "Chromium", "version": "111.0.5563.64"}
],
"platform": "Android",
"platformVersion": "11",
"architecture": "arm",
"model": "lorem ipsum (2022)"
"mobile": true,
"bitness": "32",
"wow64": false
}
}
মোবাইল এমুলেশন বনাম বাস্তব ডিভাইস
মোবাইল এমুলেশন সহ একটি ডেস্কটপে ওয়েবসাইটগুলি পরীক্ষা করা সহায়ক, তবে এটি প্রকৃত ডিভাইসে পরীক্ষার একটি নিখুঁত প্রতিলিপি নয়। কিছু মূল পার্থক্য রয়েছে, যার মধ্যে রয়েছে:
- মোবাইল ডিভাইসে প্রায়ই একটি ভিন্ন GPU থাকে, যা বড় কর্মক্ষমতা পরিবর্তনের দিকে নিয়ে যেতে পারে।
- মোবাইল UI অনুকরণ করা হয় না (বিশেষত, ঠিকানা বার লুকিয়ে রাখা পৃষ্ঠার উচ্চতাকে প্রভাবিত করে)।
- দ্ব্যর্থতা নিরসন পপআপ (যেখানে আপনি কয়েকটি টাচ টার্গেটের মধ্যে একটি নির্বাচন করেন) সমর্থিত নয়।
- অনেক হার্ডওয়্যার API (উদাহরণস্বরূপ,
orientationchange
ইভেন্ট) অনুপলব্ধ।