2017-09-14 11 views
2

CSSドロップダウンでアイテムを選択したいが、それを行う方法がないと思われるので、Googleのホテルレビューページhereを例として取り上げることができます。最新のレビューでどのようにセレンを使ってプログラムで選択できますか?Selenium WebDriver with javaを使用してCSSのカスタムドロップダウンリストから項目を選択する方法は?

基本的に私はホテルのすべてのレビューを見るには最も便利なのではなく、最新のものを選んでくださいが、デフォルトでは最も便利な順番になっていますので、プログラムでドロップダウンを切り替える必要があります。 CSSのドロップダウン要素上でのクリックをシミュレートする方法はあり

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

は、私はこの方法で試してみた:

 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)を取得していますセレンのWebドライバでこれを好きですか?

+0

私は私が正しくあなたの質問を理解している場合わかりません。私は 'xpath'を' // g-dropdown-menu/g-popup'までトレースすることができましたが、それを超えることはできませんでした。手作業で私たちに更新してもらえますか? – DebanjanB

+0

基本的には、ホテルのすべてのレビューを見るには、最も便利なホテルの代わりに最新のホテルを選んでみてください。しかし、デフォルトでは、最も便利な順番になっています。私がする必要があるのは、最近、セレニウムを使ってドロップダウンを選択することです。何か案は ? – aleroot

答えて

2

分析:

セレンのJava API:Select.class HTML selectタグを使用してドロップダウンのためにのみ適しています。ドロップダウンのインプリメントのために、JQueryのドロップダウンプラグイン、Select class not supportのように、ドロップダウンをクリックして表示するオプションを作成し、必要なオプションを選択する必要があります。

ソリューション:

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(); 
} 
関連する問題