2012-11-26 20 views
0
<span id="outDuration" class="check_duration last flL" onclick="hideCalendar('#pickUpDate');"> 
     <label style="width:95px"> 
     <span class="Class-Outmatch"> 
      <select id="duration" class="selectBox" tabindex="7" name="duration"> 
         <option selected="selected" value="1">1</option> 
         <option value="2">2</option> 
         <option value="3">3</option> 
         <option value="4">4</option> 
         <option value="5">5</option> 
         <option value="6">6</option> 
         <option value="7">7</option> 
         <option value="8">8</option> 
         <option value="9">9</option> 
      </select> 
      <span class="left_part flL firefinder-match"></span> 
      <span class="selectBox center_part flL selectBox-dropdown" tabindex="7"> 
         <span class="selectBox-label">5</span> 

我無法更改選擇框的值。 默認情況下,選擇值1。 如果我手動改變了它到5然後將下面的HTML代碼從1變爲5無法使用Java/webDriver中的select類更改選擇框值

<span class="selectBox-label">5</span> 

值但選項標籤屬性selected沒有改變。 選擇標記是不可見的。

如果使用以下代碼,則會出現異常。

Select select = driver.findElement(By.xpath("//span[@id='outDuration']/span/select")).SelectByVisibleText("5"); 

Exception: Element is not currently visible and so may not be interacted with 
+3

那麼,這是什麼,Java或JavaScript? – Cerbrus

回答

1

您是否嘗試過使用SelectByValue代替SelectByVisibleText

+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你可以隨時評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/faq#reputation),你將能夠[評論任何帖子](http://stackoverflow.com/privileges/comment)。 –

+1

多數民衆贊成在這個網頁的問題之一,它不允許newcommer通過評論要求額外的信息,所以他們可以給一個正確的答案,因爲我沒有足夠的代表我只有2個選項,等待別人要求信息巫婆不接受我的代表或這樣做,給出一個答案,這不是一個真正的答案 –

+0

提高你的聲譽.. :) @RiccoE –

0

你提到select標籤是不可見的,這就是爲什麼驅動程序會給你錯誤,因爲它不可見,所以你不能與它交互。

Selenium用於允許與隱藏元素進行交互,但不是webdriver,因爲它希望更適當地模擬用戶交互。

要在網絡驅動器中實現這一點,您需要首先通過執行使其在頁面上可見的操作,然後使用selectbylabel,使選擇標記可見。另外你的xpath似乎正在考慮跨度id,而選擇標籤本身有一個id來標識它。我會建議直接使用select的id而不是相對的方式。

0

使用:

Select select=new Select(Utils.driver.findElement(By.xpath("//span[@id='outDuration']//select[@id='duration']"))); 
select.deselectAll(); 
select.selectByVisibleText("5"); 

如果再得你的知名度例外,那麼你就必須去與JavaScript Executor