আমার ওয়েবপৃষ্ঠায় div
একটি class
নামযুক্ত আছে Test
।
আমি এটি দিয়ে কীভাবে খুঁজে পাব XPath
?
আমার ওয়েবপৃষ্ঠায় div
একটি class
নামযুক্ত আছে Test
।
আমি এটি দিয়ে কীভাবে খুঁজে পাব XPath
?
উত্তর:
এই নির্বাচকের কাজ করা উচিত তবে আপনি যদি এটি আপনার উপযুক্ত মার্কআপের সাথে প্রতিস্থাপন করেন তবে আরও দক্ষ হবে:
//*[contains(@class, 'Test')]
বা, যেহেতু আমরা জানি যে অনুসন্ধান করা উপাদানটি হ'ল div
:
//div[contains(@class, 'Test')]
তবে যেহেতু এটি যেমন class="Testvalue"
বা class="newTest"
কমেন্টের সাথে মিলিত হবে @ তোমালকের সংস্করণটি আরও ভাল :
//div[contains(concat(' ', @class, ' '), ' Test ')]
যদি আপনি সত্যই নিশ্চিত হয়ে ওঠেন যে এটি সঠিকভাবে মেলে তবে আপনি ক্লাসের নাম (@ টেরির দ্বারা উল্লিখিত) হিসাবে চারপাশে বিপথগামী হোয়াইটস্পেস অক্ষরগুলি পরিষ্কার করার জন্য নরমালাইজ-স্পেস ফাংশনটিও ব্যবহার করতে পারেন:
//div[contains(concat(' ', normalize-space(@class), ' '), ' Test ')]
নোট করুন যে এই সমস্ত সংস্করণে, আপনি যে শর্তের সাথে মিল রাখতে চান সেই নামটির দ্বারা * সেরাটি প্রতিস্থাপন করা উচিত, যদি না আপনি প্রদত্ত শর্তটির জন্য নথিতে প্রতিটি উপাদান অনুসন্ধান করতে চান।
//div[contains(concat(' ', @class, ' '), ' Test ')]
- আপনারাও আংশিক ম্যাচগুলি চালু করবেন।
সবচেয়ে সহজ উপায় ..
//div[@class="Test"]
ধরে নিয়েছি আপনি <div class="Test">
বর্ণিত হিসাবে সন্ধান করতে চান ।
//
কেবলমাত্র ব্যবহার করে না বলেই /
।
কেবলমাত্র সঠিক ভাবে জন্য XPath সঙ্গে এটা করতে:
//div[contains(concat(" ", normalize-space(@class), " "), " Test ")]
ফাংশনটি normalize-space
হোয়াইটস্পেসের শীর্ষস্থানীয় এবং অনুসরণযোগ্য স্ট্রিপগুলি সজ্জিত করে এবং হোয়াইটস্পেসের অক্ষরের ক্রমগুলি একটি একক স্থান দ্বারা প্রতিস্থাপন করে।
যদি এই এক্সপথ প্রশ্নের অনেকগুলি প্রয়োজন না হয় তবে আপনি এমন একটি লাইব্রেরি ব্যবহার করতে পারেন যা সিএসএস নির্বাচকদের এক্সপথে রূপান্তর করে, কারণ সিএসএস নির্বাচকরা সাধারণত এক্সপথ অনুসন্ধানগুলির চেয়ে পড়া এবং লেখার পক্ষে উভয়ই অনেক সহজ। উদাহরণস্বরূপ, এই ক্ষেত্রে, আপনি উভয় ব্যবহার করতে div[class~="Test"]
এবং div.Test
একই ফলাফল পেতে পারেন ।
কিছু গ্রন্থাগার আমি খুঁজে পেতে সক্ষম হয়েছি:
আমি কেবল এটি একটি উত্তর হিসাবে সরবরাহ করছি, যেমন টমালক দীর্ঘকাল আগে মধ্যস্বত্বের উত্তরটির জন্য একটি মন্তব্য হিসাবে সরবরাহ করেছিল
//div[contains(concat(' ', @class, ' '), ' Test ')]
concat(' ', normalize-space(@class), ' ')
দেওয়ার জন্য তবে সমস্ত ধরণের সাদা-স্পেস অক্ষরগুলির জন্য অ্যাকাউন্ট কী ?
//div[contains(concat(' ', @class, ' '), ' Test ')]/chid
বাচ্চাদের বাছাই করে না কেন ?
পূর্ববর্তী উত্তরগুলির বাইরে একটি সহায়ক ফাংশন তৈরি করা যেতে পারে:
function matchClass($className) {
return "[contains(concat(' ', normalize-space(@class), ' '), ' $className ')]";
}
তারপরে আপনার ক্যোয়ারীতে ফাংশন কলটি সন্নিবিষ্ট করুন।
আপনি এই উদাহরণের মতো উপাদানগুলি খুঁজে পেতে পারেন (সমস্ত CSS উপাদানগুলি)
private By
allElementsCss = By.xpath(".//div[@class]");