javascript - ওয়েব ড্রাইভারের জন্য অফিসিয়াল লোকেটার কৌশল gies



google-chrome selenium (1)

অফিসিয়াল ডাব্লু 3 সি ওয়েবডাইভার ডকুমেন্টেশনে , স্পষ্টভাবে বলা হয়েছে যে অবস্থানের কৌশলগুলি হ'ল :

State   Keyword
CSS selector    "css selector"
Link text selector  "link text"
Partial link text selector  "partial link text"
Tag name    "tag name"
XPath selector  "xpath"

তবে সেলেনিয়ামের তারের প্রোটোকলটি অনুমোদিত:

class name  
css selector
id  
name
link text
partial link text
tag name
xpath

থিওরিতে, সেলেনিয়ামের ডক্সগুলি অপ্রচলিত এবং "আসল" গল্পটি নতুন স্পেস নথিতে রয়েছে। যাহোক...

আমি সর্বশেষতম ক্রোমের নিজস্ব ওয়েবড্রাইভারে কয়েকটি পরীক্ষা চালিয়েছি এবং আমি সেই name এবং class name উভয়ই কাজ নিশ্চিত করতে পারি; তবে, তারা চশমা হয় না।

আমার মনে আছে একটি ক্রোমিয়াম ইস্যুতে পড়া যে তারা কেবলমাত্র অফিসিয়াল ওয়েবড্রাইভার চশমা প্রয়োগ করবে।

এখন: আমি জেনেরিক উত্তর জানি , যেখানে "চশমা সর্বদা 100% অনুসরণ করা হয় না" ইত্যাদি। তবে, আমি যা জানতে চাই তা হ'ল:

  • আপনি কি ক্রোমিয়ামে কোডটি আবিষ্কার করতে পারেন যা এটি প্রয়োগ করে? (লিঙ্কটি সর্বাধিক স্বাগত জানাবে)
  • ক্রোমিয়াম মেলিং তালিকায় এগুলি নিয়ে আলোচনা হয়েছে?
  • "বেসরকারী" কমান্ডগুলি (যা "পুরানো" সেলেনিয়াম স্পেস ফাইলগুলিতে নথিভুক্ত রয়েছে) থাকার সম্ভাবনা রয়েছে? আপনি কোথায় পড়েছেন?

হ্যাঁ, আপনি এটা ঠিক দেখেছি।

বর্তমান WebDriver - W3C Candidate Recommendation তালিকাভুক্ত করা লোকের Locator Strategies রয়েছে:

  • "css selector" : সিএসএস নির্বাচক
  • "link text" : লিঙ্ক পাঠ্য নির্বাচনকারী
  • "partial link text" : আংশিক লিঙ্ক পাঠ্য নির্বাচক
  • "tag name" : ট্যাগ নাম
  • "xpath" : এক্সপথ নির্বাচনকারী

স্ন্যাপশট:

যাইহোক, JsonWireProtocol একবার নীচে তালিকাভুক্ত লোকেটার কৌশলগুলি সমর্থন করার জন্য ব্যবহৃত হয়েছিল তবে বর্তমানে নথিটিতে স্পষ্টভাবে বলা হয়েছে এটি ওবিএসওএলটিই হিসাবে স্থিতি :

  • class name : এমন উপাদান ফেরত দেয় যার শ্রেণীর নামটিতে সন্ধানের মান থাকে; যৌগিক শ্রেণীর নাম অনুমোদিত নয়।
  • css selector : css selector মেলে এমন একটি উপাদান ফেরত দেয়।
  • id : একটি উপাদান ফিরে আসে যার আইডি বৈশিষ্ট্যটি অনুসন্ধান মানের সাথে মেলে।
  • name : এমন একটি উপাদান ফিরে আসে যার NAME বৈশিষ্ট্য অনুসন্ধান মানের সাথে মেলে।
  • link text : এমন একটি অ্যাঙ্কর উপাদান ফেরত দেয় যার দৃশ্যমান পাঠ্যটি অনুসন্ধান মানের সাথে মেলে।
  • partial link text : এমন একটি অ্যাঙ্কর উপাদান ফেরত দেয় যার দৃশ্যমান পাঠটি আংশিক অনুসন্ধানের সাথে মেলে।
  • tag name : এমন একটি উপাদান ফেরত দেয় যার ট্যাগ নামটি অনুসন্ধান মানের সাথে মেলে।
  • xpath : এক্সপথ এক্সপ্রেশনটির সাথে মেলে এমন একটি উপাদান ফেরত দেয়। প্রদত্ত এক্সপাথ এক্সপ্রেশন অবশ্যই "যেমন আছে" সার্ভারে প্রয়োগ করতে হবে; যদি অভিব্যক্তি উপাদান মূলের সাথে সম্পর্কিত না হয় তবে সার্ভারটি এটি সংশোধন করা উচিত নয়। ফলস্বরূপ, একটি এক্সপথ ক্যোয়ারী মূল উপাদানটির সাবট্রিতে থাকা উপাদানগুলিকে ফেরত দিতে পারে।

স্ন্যাপশট:

পরিবর্তনটি সম্পর্কিত ক্লায়েন্টের নির্দিষ্ট বাইন্ডিংগুলির মাধ্যমে প্রচারিত হয়েছিল। Selenium-Java ক্লায়েন্টদের জন্য এখানে ক্লায়েন্ট কোডটি রয়েছে যেখানে আমরা ব্যবহারকারীদের জন্য সুইচকেস ব্যবহার করি:

        switch (using) {
          case "class name":
            toReturn.put("using", "css selector");
            toReturn.put("value", "." + cssEscape(value));
            break;

          case "id":
            toReturn.put("using", "css selector");
            toReturn.put("value", "#" + cssEscape(value));
            break;

          case "link text":
            // Do nothing
            break;

          case "name":
            toReturn.put("using", "css selector");
            toReturn.put("value", "*[name='" + value + "']");
            break;

          case "partial link text":
            // Do nothing
            break;

          case "tag name":
            toReturn.put("using", "css selector");
            toReturn.put("value", cssEscape(value));
            break;

          case "xpath":
            // Do nothing
            break;
        }
        return toReturn;

স্ন্যাপশট:

এখন, আপনার প্রশ্নটি অবশ্যই হবে কেন W3C Specs এবং clients এই পরিবর্তন হয়। #1042 অনুসারে ওয়েবড্রাইভার অবদানকারীদের কাছ থেকে উত্তরগুলি বেশ সোজা ছিল:

This keeps the specification simple as these can be implemented using the CSS selector, which maps down to querySelector/querySelectorAll.





chrome-web-driver