2012-10-08 47 views
6

我一直在使用Selenium WebDriver幾個月,而且我正在處理Web應用程序中的下拉菜單。Selenium WebDriver - 無法關閉Mac OS X上的Chrome中的選擇下拉菜單

正在發生的事情是,測試打開頁面,通過查找頁面並驗證頁面上顯示的幾個元素來驗證頁面上的幾個元素。 完成後有一些文本輸入到不同的字段中,然後點擊選項選擇框打開下拉菜單。 在此之後,測試遍歷下拉菜單中的所有選項,直至找到所需的一個選項,然後單擊該選項。

此時已選擇該選項,但下拉菜單未關閉。

我已經嘗試點擊選項再次選擇,但這沒有效果,在其餘的測試其他頁面導航到,菜單不關閉。

然後頁面被保存,然後導航離開。 但是,直到瀏覽器關閉,下拉菜單纔會保留。

這是從應用程序的代碼:

<select id="options" name="options" class="options"> 
<option value="option1 (auto)">option1 (auto)</option> 
<option value="option2">option2</option> 
<option value="option3">option3</option> 
</select> 

回答

1

我已經解決了這個問題,一個解決辦法,因爲這是我已經找到工作的唯一途徑。

首先感謝您eugene.polschikov爲您的答案,雖然它沒有解決問題,它有點打開我的眼睛,我沒有行動建設者的知識,它給了我關於未來測試的一些偉大的想法。 也感謝任何閱讀此內容並思考可能的解決方案的人。

現在的解決方法是select不打開。 代碼的工作方式是它會打開列表並找到它想要的並點擊它,此時select不會關閉,所以現在代碼不再打開select,首先點擊在隱藏的選項選擇它,而不是100%我想要的,但它的工作原理。

快樂編程, 本。

2

第一解決方案,我會嘗試是點擊的方式不同的菜單選項。 Selenium API爲我們提供了這種可能性。 1)找到例如元素的CSS選擇器。

String cssOption1 = "select[id='options']>option[value='option1 (auto)']"; 
String cssOption2 = "select[id='options']>option[value='option2']"; 
String cssOption3 = "select[id='options']>option[value='option3']"; 

也不要忘記,以驗證您找到正確的元素。在如firepath,在ffox螢火蟲插件: proper location on web element in firepath

方法1

driver.findElement(By.cssSelector(cssOption2)).click(); 

方法2使用行動建設者API

WebElement mnuOptionElement; 
mnuOptionElement = driver.findElement(By.cssSelector(cssOption2)); 
Actions builder = new Actions(driver); 
// Move cursor to the Main Menu Element 
builder.moveToElement(mnuOptionElement).click(); 
關於操作

更多信息生成器,你可以使用jsExecutor點擊網頁元素上得到here

方法3。在任何情況下總是適合我。

JavascriptExecutor js = (JavascriptExecutor) driver; 
     StringBuilder stringBuilder = new StringBuilder(); 
     stringBuilder.append("var x = $(\'"+cssOption2+"\');"); 
     stringBuilder.append("x.click();"); 
     js.executeScript(stringBuilder.toString()); 

希望這對你的作品

+0

謝謝你的回答,但不管我怎麼就降單擊向下菜單保持打開狀態。 我也嘗試了不同的方式點擊選擇嘗試和關閉它,但唉,沒有運氣。 –

+0

你試過點擊使用JavaScript?這是我描述的第三個 –

+0

是的,我不是要在Java腳本上找出來,但我和同事嘗試了JQuery和JavaScript,並沒有效果。 我們總是可以打開下拉框,但我們永遠無法關閉它,我們試圖發送按鍵和鼠標點擊,但沒有運氣。 再次感謝, –

0

如果一個人可以按Escape退出組合框,你可以做,在硒通過切換到有源元件:

from selenium.webdriver.common.keys import Keys 
    element = driver.switch_to.active_element 
    element.send_keys(Keys.ESCAPE)  
相關問題