सेलेनियम 2 में ड्रॉप डाउन विकल्प कैसे चुनें / प्राप्त करें


96

मैं अपने सेलेनियम 1 कोड को सेलेनियम 2 में परिवर्तित कर रहा हूं और ड्रॉप डाउन मेनू में लेबल का चयन करने या ड्रॉप डाउन का चयनित मान प्राप्त करने का कोई आसान तरीका नहीं खोज सकता। क्या आप जानते हैं कि सेलेनियम 2 में कैसे करना है?

यहाँ दो कथन दिए गए हैं जो सेलेनियम 1 में काम करते हैं लेकिन 2 में नहीं:

browser.select("//path_to_drop_down", "Value1");
browser.getSelectedValue("//path_to_drop_down");

क्या आपने फायरबग का उपयोग करके इसे खोजने की कोशिश की है? फायरबग / xpather के साथ उत्पन्न xpath का उपयोग करना आसान बना सकता है।

1
सवाल ड्रॉप डाउन का पता लगाने या खोजने के बारे में नहीं है। इसके बारे में उस ड्रॉप डाउन में एक लेबल का चयन करें। मैं ड्रॉप डाउन का पता लगा सकता हूं, लेकिन सेलेनियम 2 में कॉल करने के लिए कौन सी विधि का चयन नहीं करता () और getSelectedValue () या getSelectedLabel () सेलेनियम 2 में काम नहीं करते हैं
user7860452

सी # में समाधान: stackoverflow.com/questions/5278281/…
पकाएं

जवाबों:


184

सेलेनियम प्रलेखन और चयन वर्ग के लिए javadoc में वेबड्राइवर का उपयोग करके फ़ॉर्म भरने के बारे में अनुभाग देखें ।

लेबल पर आधारित विकल्प का चयन करने के लिए:

Select select = new Select(driver.findElement(By.xpath("//path_to_drop_down")));
select.deselectAll();
select.selectByVisibleText("Value1");

पहला चयनित मूल्य प्राप्त करने के लिए:

WebElement option = select.getFirstSelectedOption()

By.xpath ( "// path_to_drop_down")। मैं इसे एक लोकेटर जैसे कि by.name से बदल दूंगा।
डैनियल

2
deselectAll एक UnsupportedOperationException को फेंक देगा यदि चयन कई चयनों का समर्थन नहीं करता है
टॉम हार्टवेल

4
C # में, SelectElement वर्ग का उपयोग करें, इसलिए:SelectElement salesExecutiveDropDown = new SelectElement(webDriver.FindElement(By.Id("salesExecutiveId")));
जेरेमी McGee

जब तक मैंने इस लाइन पर टिप्पणी नहीं की, तब तक यह कोड ड्रॉपडाउन का चयन करने में सक्षम नहीं था: //select.deselectAll (); फिर इसने काम करना शुरू कर दिया। आपकी माइलेज भिन्न हो सकती है।
गोरबीस्म

1
ध्यान दें कि deselectAllकेवल मल्टीसेप्ट के लिए मान्य है: selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/…
user1205577


4

लगातार उपयोग करने के लिए रूबी में, निम्नलिखित जोड़ें:

module Selenium
  module WebDriver
    class Element
      def select(value)
        self.find_elements(:tag_name => "option").find do |option|
          if option.text == value
            option.click
              return
           end
       end
    end
  end
end

और आप मूल्य का चयन करने में सक्षम होंगे:

browser.find_element(:xpath, ".//xpath").select("Value")

3

प्रयोग करके देखें:

selenium.select("id=items","label=engineering")

या

selenium.select("id=items","index=3")

0

एक समान विकल्प जो जैंडरसन द्वारा ऊपर पोस्ट किया गया था, वह बस सेलेनियम में .GetAttribute विधि का उपयोग करेगा। इसका उपयोग करते हुए, आप किसी ऐसे आइटम को पकड़ सकते हैं जिसका कोई विशिष्ट मूल्य या लेबल है जिसे आप ढूंढ रहे हैं। इसका उपयोग यह निर्धारित करने के लिए किया जा सकता है कि क्या किसी तत्व में लेबल, शैली, मान आदि है। ऐसा करने का एक सामान्य तरीका ड्रॉप डाउन में आइटमों के माध्यम से लूप करना है जब तक कि आपको वह नहीं मिल जाता है जिसे आप चाहते हैं और इसे चुनें। C # में

int items = driver.FindElement(By.XPath("//path_to_drop_Down")).Count(); 
for(int i = 1; i <= items; i++)
{
    string value = driver.FindElement(By.XPath("//path_to_drop_Down/option["+i+"]")).GetAttribute("Value1");
    if(value.Conatains("Label_I_am_Looking_for"))
    {
        driver.FindElement(By.XPath("//path_to_drop_Down/option["+i+"]")).Click(); 
        //Clicked on the index of the that has your label / value
    }
}

0

आप इस तरह कर सकते हैं:

public void selectDropDownValue(String ValueToSelect) 
{

    webelement findDropDownValue=driver.findElements(By.id("id1"))    //this will find that dropdown 

    wait.until(ExpectedConditions.visibilityOf(findDropDownValue));    // wait till that dropdown appear

    super.highlightElement(findDropDownValue);   // highlight that dropdown     

    new Select(findDropDownValue).selectByValue(ValueToSelect);    //select that option which u had passed as argument
}

0

यह विधि ड्रॉप डाउन के लिए चयनित मान लौटाएगी,

public static String getSelected_visibleText(WebDriver driver, String elementType, String value)
  {
    WebElement element = Webelement_Finder.webElement_Finder(driver, elementType, value);
   Select Selector = new Select(element);
    Selector.getFirstSelectedOption();
    String textval=Selector.getFirstSelectedOption().getText();
    return textval;
  }

इस दौरान

स्ट्रिंग टैक्स्ट = चयनकर्ता ।getFirstSelectedOption ();

element.getText ();

ड्रॉप डाउन में सभी तत्वों को वापस करेगा।


-2

यह ड्रॉप डाउन से मूल्य का चयन करने के लिए कोड है

Selectlocator का मान ड्रॉपडाउन बॉक्स का xpath या नाम होगा, और विकल्प के लिएLocator का ड्रॉपडाउन बॉक्स से चयन किया जाना होगा।

public static boolean select(final String selectLocator,
        final String optionLocator) {
    try {
        element(selectLocator).clear();
        element(selectLocator).sendKeys(Keys.PAGE_UP);
        for (int k = 0; k <= new Select(element(selectLocator))
                .getOptions().size() - 1; k++) {
            combo1.add(element(selectLocator).getValue());
            element(selectLocator).sendKeys(Keys.ARROW_DOWN);
        }
        if (combo1.contains(optionLocator)) {
            element(selectLocator).clear();
            new Select(element(selectLocator)).selectByValue(optionLocator);
            combocheck = element(selectLocator).getValue();
            combo = "";

            return true;
        } else {
            element(selectLocator).clear();
            combo = "The Value " + optionLocator
                    + " Does Not Exist In The Combobox";
            return false;
        }
    } catch (Exception e) {
        e.printStackTrace();
        errorcontrol.add(e.getMessage());
        return false;
    }
}



private static RenderedWebElement element(final String locator) {
    try {

        return (RenderedWebElement) drivers.findElement(by(locator));
    } catch (Exception e) {
        errorcontrol.add(e.getMessage());
        return (RenderedWebElement) drivers.findElement(by(locator));
    }
}

धन्यवाद,

रेखा।


4
-1 रास्ता अधूरा है और पदावनत विधियों का उपयोग (RenderedWebElement)
Ardesco
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.