selenium
  • selenium-webdriver
  • 2017-10-05 109 views 0 likes 
    0

    我想從硒webdriver的下拉菜單中選擇一個值,但它只是打開下拉菜單並立即關閉它。使用硒webdriver從下拉菜單中選擇數值

    這裏是webdriver的代碼:

    driver.findElement(By.cssSelector("span.k-select ")).click(); 
         Thread.sleep(3000); 
         driver.findElement(By.xpath("//li[@class='k-item'][.='Revenue per click']")).click(); 
    

    這是從瀏覽器的下拉列表中的html代碼:

    <div class="controls"> 
        <span class="k-widget k-dropdown k-header kendo-input span8 ddFix" unselectable="on"> 
         <span unselectable="on" class="k-dropdown-wrap k-state-default"> 
         <span unselectable="on" class="k-input">Select revenue type... 
         </span> 
         <span unselectable="on" class="k-select"> 
          <span unselectable="on" class="k-icon k-i-arrow-s">select</span> 
         </span> 
         </span> 
         <input name="revenueType" id="revenueType" class="kendo-input span8 ddFix" data-role="dropdownlist" style="display: none;"> 
        </span> 
    </div> 
    
    <div class="k-animation-container km-popup"> 
         <div class="k-list-container k-popup k-group k-reset" id="revenueType-list" data-role="popup"> 
          <ul unselectable="on" class="k-list k-reset" tabindex="-1" role="listbox" aria-hidden="true" id="revenueType_listbox" aria-live="off" style="overflow: auto;"> 
           <li tabindex="-1" role="option" unselectable="on" class="k-item">Select revenue type...</li> 
           <li tabindex="-1" role="option" unselectable="on" class="k-item">Revenue per action</li> 
           <li tabindex="-1" role="option" unselectable="on" class="k-item">Revenue per click</li> 
           <li tabindex="-1" role="option" unselectable="on" class="k-item">Revenue per sale</li> 
           <li tabindex="-1" role="option" unselectable="on" class="k-item">Revenue per action + Revenue per sale</li> 
           <li tabindex="-1" role="option" unselectable="on" class="k-item">Revenue per mile</li> 
          </ul> 
         </div> 
        </div> 
    
    +0

    哪裏下拉 – iamsankalp89

    回答

    0

    很難沒有上下文來調試,但:

    1. 您的定位器無效,請嘗試使用:

      By.xpath("//li[text()='Revenue per click']") 
      

      由於只有一個項目具有該文本,所以應該足夠了。如果你仍然想在選擇@class,使用

      By.xpath("//li[@class='k-item' and text()='Revenue per click']") 
      
    2. 嘗試使用JavaScript改變不可選擇爲關閉使用JavaScript執行。

    +0

    它仍然無法正常工作,因爲我可以看到的主要問題是,之後點擊下拉它打開並立即關閉,這第二行沒有時間找到我想要選擇的文本,我試圖把第一次點擊後Thread.sleep(3000),但它並沒有幫助 – alonso05

    0

    獲取下拉文本值後進行點擊操作

    subdropdown_child = navigationDriver.findElements(By.cssSelector("select#ctl00_SPWebPartManager1_g_c873566a_540c_4681 option");         
    for (Element subchild : subdropdown_child) 
        {  
        dropdown_value = subchild.text(); 
        new Select(navigationDriver.findElementByCssSelector("select#ctl00_SPWebPartManager1_g_c873566a_540c_4681_")).selectByVisibleText(dropdown_value); 
        } 
    
    相關問題