সেলেনিয়াম ওয়েবড্রাইভার সি # ব্যবহার করে ড্রপ ডাউন থেকে কীভাবে একটি বিকল্প নির্বাচন করবেন?


87

আমি আমার ওয়েব পরীক্ষার জন্য একটি বিকল্প নির্বাচন করার চেষ্টা করছিলাম। একটি উদাহরণ এখানে পাওয়া যাবে: http://www.tizag.com/phpT/example/formex.php

একটি বিকল্প অংশ নির্বাচন করা বাদ দিয়ে সবকিছু দুর্দান্ত কাজ করে। মান বা লেবেল দ্বারা কোনও বিকল্প কীভাবে নির্বাচন করবেন?

আমার কোড:

using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;
using System.Collections.ObjectModel;
using System.Text.RegularExpressions;
using System.Threading;
using System.Diagnostics;
using System.Runtime.InteropServices;

class GoogleSuggest
{
    static void Main()
    {
        IWebDriver driver = new FirefoxDriver();

        //Notice navigation is slightly different than the Java version
        //This is because 'get' is a keyword in C#
        driver.Navigate().GoToUrl("http://www.tizag.com/phpT/examples/formex.php");
        IWebElement query = driver.FindElement(By.Name("Fname"));
        query.SendKeys("John");
        driver.FindElement(By.Name("Lname")).SendKeys("Doe");
        driver.FindElement(By.XPath("//input[@name='gender' and @value='Male']")).Click();
        driver.FindElement(By.XPath("//input[@name='food[]' and @value='Chicken']")).Click();
        driver.FindElement(By.Name("quote")).Clear();
        driver.FindElement(By.Name("quote")).SendKeys("Be Present!");
        driver.FindElement(By.Name("education")).SendKeys(Keys.Down + Keys.Enter); // working but that's not what i was looking for
        // driver.FindElement(By.XPath("//option[@value='HighSchool']")).Click(); not working
        //  driver.FindElement(By.XPath("/html/body/table[2]/tbody/tr/td[2]/table/tbody/tr/td/div[5]/form/select/option[2]")).Click(); not working
        // driver.FindElement(By.XPath("id('examp')/x:form/x:select[1]/x:option[2]")).Click(); not working

        }
}

উত্তর:


188

আপনাকে অবশ্যই ড্রপ ডাউন তালিকা থেকে একটি নির্বাচন উপাদান নির্বাচন করতে হবে।

 using OpenQA.Selenium.Support.UI;

 // select the drop down list
 var education = driver.FindElement(By.Name("education"));
 //create select element object 
 var selectElement = new SelectElement(education);

 //select by value
 selectElement.SelectByValue("Jr.High"); 
 // select by text
 selectElement.SelectByText("HighSchool");

আরও তথ্য এখানে


একটি বাগ আছে। var selectElement = new SelectElement(education);হওয়া উচিত:var selectElement = new SelectElement(element);
গ্রেগ গৌথিয়ার

52
এফওয়াইআই: একটি সিলেক্ট এলিমেন্ট ব্যবহার করার জন্য আপনাকে সেলেনিয়াম ওয়েবড্রাইভার সাপোর্ট প্যাকেজ অন্তর্ভুক্ত করতে হবে যা সেলেনিয়াম ওয়েবড্রাইভারের চেয়ে আলাদা নিউগেট প্যাকেজ। নেমস্পেস ওপেনকিউএ.সেলেনিয়াম.সপোর্ট.ইউ অন্তর্ভুক্ত করুন।
জেমস লরুক

আমি ফায়ারফক্স ড্রাইভার, সেলেনিয়াম সংস্করণ 2.53.1 এবং সমর্থন লাইব্রেরি 2.53 ব্যবহার করছি, দ্য সিলেকবাই টেক্সট কাজ করছে বলে মনে হচ্ছে না। আমি সমস্ত বিকল্প দেখতে সক্ষম। এমনকি যদি আমি বিকল্পগুলি পুনরাবৃত্তি করি এবং সঠিক মান সেট করি, মানটি সেট হচ্ছে না ... কোনও সহায়তা দুর্দান্ত হবে
বিশ্ব মেনন

4
আপনি কি অন্যান্য ড্রাইভার বা কেবল ফায়ারফক্স চেষ্টা করেছেন? এছাড়াও, প্যাকেজের প্রযুক্তিগত নাম বর্তমানে সেলেনিয়াম uসপোর্ট।
ড্যান Carsharpster

এটি আমার পক্ষে দুর্দান্ত কাজ করেছে, সেলেনিয়ামও যোগ করতে হয়েছিল well পাশাপাশি সমর্থন নিউগেটও।
রায় কে

13

এতে একটি পয়েন্ট যুক্ত করে- আমি এমন একটি সমস্যার মুখোমুখি হয়েছি যে ওপেনকিউএ.সেলেনিয়াম.সপোর্ট।উই সি # প্রকল্পের সাথে সেলেনিয়াম.নেট বাইন্ডিং ইনস্টল করার পরে নেমস্পেস উপলব্ধ ছিল না। পরে জানতে পেরেছিলাম যে কমান্ডটি চালিয়ে আমরা সহজেই সেলেনিয়াম ওয়েবড্রাইভার সাপোর্ট ক্লাসগুলির সর্বশেষ সংস্করণ ইনস্টল করতে পারি:

Install-Package Selenium.Support

নিউগেট প্যাকেজ ম্যানেজার কনসোলে বা সেলেনিয়াম ইনস্টল করুন Nu নিউগেট ম্যানেজারের সহায়তা।


9

অন্য উপায় এটি এক হতে পারে:

driver.FindElement(By.XPath(".//*[@id='examp']/form/select[1]/option[3]")).Click();

এবং আপনি বিকল্পটি সূচক পরিবর্তন করতে পারেন [x] x নির্বাচন করে যে উপাদানটি নির্বাচন করতে চান তার সংখ্যা দ্বারা changing

আমি জানি না এটি সবচেয়ে ভাল উপায় কিনা তবে আমি আশা করি এটি আপনাকে সহায়তা করবে।


আমি নিশ্চিত না যে এটি সর্বদা কাজ করে। কেউ এইভাবে এটি করেছিলেন এবং এটি কার্যকর হয়নি এবং আমি ম্যাথু লকের প্রস্তাবিত
ফ্র্যাক্টাল

3

পাঠ্যের মাধ্যমে একটি বিকল্প নির্বাচন করতে;

(new SelectElement(driver.FindElement(By.XPath(""))).SelectByText("");

মানের মাধ্যমে একটি বিকল্প নির্বাচন করতে:

 (new SelectElement(driver.FindElement(By.XPath(""))).SelectByValue("");

3

ড্রপ ডাউন থেকে আইটেম নির্বাচন করার জন্য সেলেনিয়াম ওয়েবড্রাইভার সি # কোড:

IWebElement EducationDropDownElement = driver.FindElement(By.Name("education"));
SelectElement SelectAnEducation = new SelectElement(EducationDropDownElement);

ড্রপ ডাউন আইটেমটি নির্বাচন করার জন্য তিনটি উপায় রয়েছে: i) পাঠ্য অনুসারে নির্বাচন করুন ii) সূচী দ্বারা নির্বাচন করুন iii) মান অনুসারে নির্বাচন করুন

পাঠ্য অনুসারে নির্বাচন করুন:

SelectAnEducation.SelectByText("College");//There are 3 items - Jr.High, HighSchool, College

সূচক অনুসারে নির্বাচন করুন:

SelectAnEducation.SelectByIndex(2);//Index starts from 0. so, 0 = Jr.High 1 = HighSchool 2 = College

মান অনুসারে নির্বাচন করুন:

SelectAnEducation.SelectByValue("College");//There are 3 values - Jr.High, HighSchool, College

2

আপনাকে কেবল মানটি পাস করতে হবে এবং কীটি প্রবেশ করতে হবে:

driver.FindElement(By.Name("education")).SendKeys("Jr.High"+Keys.Enter);

ড্রপডাউনটিতে একই ধরণের পাঠ্য সহ একাধিক বিকল্প উপস্থিত থাকলে ব্যর্থ হয়।
আন্তি

1

এটি আমার পক্ষে এভাবে কাজ করে (আইডি দ্বারা নিয়ন্ত্রণ নির্বাচন করে এবং পাঠ্য দ্বারা বিকল্প):

protected void clickOptionInList(string listControlId, string optionText)
{
     driver.FindElement(By.XPath("//select[@id='"+ listControlId + "']/option[contains(.,'"+ optionText +"')]")).Click();
}

ব্যবহার:

clickOptionInList("ctl00_ContentPlaceHolder_lbxAllRoles", "Tester");

0

আপনি যদি ড্রপ-ডাউন বাক্স থেকে কেবল কোনও নির্বাচন খুঁজছেন তবে আমি "সূচী দ্বারা নির্বাচন করুন" পদ্ধতিটিও খুব দরকারী বলে মনে করি।

if (IsElementPresent(By.XPath("//select[@id='Q43_0']")))
{
    new SelectElement(driver.FindElement(By.Id("Q43_0")))**.SelectByIndex(1);** // This is selecting first value of the drop-down list
    WaitForAjax();
    Thread.Sleep(3000);
}
else
{
     Console.WriteLine("Your comment here);
}

0
 var select = new SelectElement(elementX);
 select.MoveToElement(elementX).Build().Perform();

  var click = (
       from sel in select
       let value = "College"
       select value
       );

4
দয়া করে আপনার কোডটিতে একটি ব্যাখ্যা যুক্ত করুন: কেন এটি প্রশ্নের উত্তর এবং এর আগে দেওয়া উত্তরগুলির চেয়ে আলাদা কী করে ?
নান্দার স্প্রেসট্রা

0
IWebElement element = _browserInstance.Driver.FindElement(By.XPath("//Select"));
IList<IWebElement> AllDropDownList = element.FindElements(By.XPath("//option"));
int DpListCount = AllDropDownList.Count;
for (int i = 0; i < DpListCount; i++)
{
    if (AllDropDownList[i].Text == "nnnnnnnnnnn")
    {
        AllDropDownList[i].Click();
        _browserInstance.ScreenCapture("nnnnnnnnnnnnnnnnnnnnnn");
    }
}

ড্রপডাউনলিস্ট নির্বাচনের সাথে কাজ করে
জেমস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.