java
  • selenium
  • 2011-10-08 32 views 11 likes 
    11

    WebDriver tabanlı sözdizimi ile java'yı kullanarak selenyumdaki bir seçim listesinden bir öğe seçmeye çalışıyorum.Selenyumda seçim listesi nasıl kullanılır?

    Bunu yapacağımı nasıl

    elements = driver.findElements(By.xpath("//form[@action='inquiry/']/p/select[@name='myselect']")); 
        if (elements.size() == 0) { 
         return false; 
        } 
        if (guests != null) { 
         //what do I do here? 
        } 
    

    tarafından seçilen listeyi var? Bu daha yavaş ise

    +0

    'guests! = Null' 'elements! = Null' demek istediniz? – nilesh

    cevap

    19
    WebElement select = driver.findElement(By.name("myselect")); 
    Select dropDown = new Select(select);   
    String selected = dropDown.getFirstSelectedOption().getText(); 
    if(selected.equals(valueToSelect)){ 
        //already selected; 
        //do stuff 
    } 
    List<WebElement> Options = dropDown.getOptions(); 
    for(WebElement option:Options){ 
        if(option.getText().equals(valueToSelect)) { 
         option.click(); //select option here;  
        }    
    } 
    

    ardından seçenek bulabilirsiniz

    dropDown.selectByValue(value); 
    or 
    
    dropDown.selectByVisibleText(text); 
    
    1
    element = driver.findElements(By.xpath("//form[@action='inquiry/']/p/select[@name='myselect']/option[*** your criteria ***]")); 
    if (element != null) { 
        element.click(); 
    } 
    

    gibi bir şey düşünün ve sonra click o

    6

    Java için geçerlidir Biraz yan not:

    Benim durumumda, @nilesh örneğine göre testi yazarken garip bir hata aldım, t kurucu geçersiz. Benim ithalat oldu:

    import org.openqa.jetty.html.Select; 
    

    benzer hatalar var olur, bu o ithalat düzeltmek zorunda:

    import org.openqa.selenium.support.ui.Select; 
    

    bu ikinci ithalat kullanırsanız

    , her şey çalışacaktır.

    +1

    Seni bilmiyorum, ama kişisel olarak, farklı ad alanlarında aynı ada sahip birden fazla nesneye sahip olan java'dan nefret ediyorum –

    0

    deneyin böyle yapmak için:

    // yöntemini vurgulamak için

    webElement findDropDown=driver.findElements(By.id="SelectDropDowm"); 
        wait.until(ExpectedConditions.visibilityOf(findDropDown)); 
        super.highlightElement(findDropDown); 
        new Select(findDropDown).selectByVisibleText(Value); 
    } 
    

    // yöntem açılır

    public void selectDropDown (Dize Değeri) {bir öğe seçmek için öğesi

    public void highlightElement (Web öğesi öğesi) {

    .
    for (int i = 0; i < 2; i++) { 
    
         JavascriptExecutor js = (JavascriptExecutor) this.getDriver(); 
         js.executeScript(
           "arguments[0].setAttribute('style', arguments[1]);", 
           element, "color: yellow; border: 3px solid yellow;"); 
         js.executeScript(
           "arguments[0].setAttribute('style', arguments[1]);", 
           element, ""); 
    
        } 
    
    } 
    
    İlgili konular