2017-09-14 48 views
2

我想選擇一個CSS下拉菜單中的項目,但似乎沒有辦法做到這一點,我們可以舉一個例子谷歌酒店審查頁面here我怎樣才能通過編程方式通過硒選擇最近的評論?如何使用Selenium WebDriver和java從CSS自定義下拉列表中選擇一個項目?

基本上我想看看酒店的所有評論排序最新的,而不是最有用的,但由於默認情況下排序最有用的,我需要通過編程切換下拉菜單。

我已經試過這樣:

 Select select = new Select(driver.findElement(By.xpath("//*[@id=\"gsr\"]/g-lightbox/div[2]/div[3]/div/div/div/div[1]/div[3]/div[2]/g-dropdown-menu/g-popup/div[2]/g-menu"))); 
     select.deselectByIndex(1); 

,但我發現說一個異常(org.openqa.selenium.support.ui.UnexpectedTagNameException):

Element should have been "select" but was "g-dropdown-menu" 

有沒有一種方法來模擬CSS下拉元件上的點擊像Selenium網絡驅動程序一樣?

+0

我不知道如果我理解正確你的問題。我能夠追蹤'xpath'直到'// g-dropdown-menu/g-popup',但是沒有超出這個範圍。你能否更新我們的手動步驟? – DebanjanB

+0

基本上我想看看酒店的所有評論按最新排序,而不是最有用的,但由於默認情況下按照最有用的排序,我需要通過編程方式切換下拉菜單。我需要做的是選擇最近使用硒的下拉菜單。有任何想法嗎 ? – aleroot

回答

2

分析:

硒的Java API:Select.class只適合於使用HTML select標籤下拉。對於其他方式的下拉菜單,比如JQuery下拉插件,選擇類不支持,對於這樣的下拉菜單,你需要點擊下拉菜單以使選項顯示出來,然後選擇你想要的選項。

解決方案:

public void selectSortby(String sortBy) { 
    // click on dropdown to expand options 
    driver.findElement(By.xpath("//div[span[text()='Sort by:']]//g-dropdown-button").click(); 
    // choose option 
    driver.findElement(By.xpath("//g-menu-item/div[text()='"+sortBy+"']")).click(); 
} 
相關問題