2016-08-12 77 views
0

複数選択ドロップダウンボックスから選択しようとしたところ、良いリソースであると思われるものが見つかりました。Selenium Webdriver複数選択ドロップダウンリストElementNotVisibleException

私は現在作業中ですhttp://preview.harriscountyfws.org/ 「Select by Agency」mutli-selectドロップダウンで複数の項目を選択しようとしています。

私がここに示したのは、まっすぐ真っ直ぐで、私が見つけた記事(以下に示す)に従っていることを示していますが、WebDriverExceptionが発生します。

ロジックが機能するにはどのような提案がありますか?ここで

はロジックです:

WebElement we; 
String searchText; 
WebDriver driver; 
Select select; 
WebElement listbox_element; 
listbox_element = driver.findElement(By.cssSelector("span[aria-owns='ddlRegion_listbox']")); 
listbox_element.click(); 

driver = new FirefoxDriver(); 
driver.get("http://preview.harriscountyfws.org/"); 

searchText="ALL"; 
we = driver.findElement(By.id("ddlRegion")); 
select = new Select(we); 
select.selectByVisibleText(searchText); 

REF:http://www.techbeamers.com/dropdown-and-multiple-select-in-webdriver

+0

注:コードは元の質問から編集されています。例外も変更されました:WebDriverException:option要素をクリックできません。投稿された元の質問に追加された新しい行は次のとおりです:WebElement listbox_element; listbox_element = driver.findElement(BycssSelector( "span [aria-owns = 'ddlRegion_listbox']")); listbox_element.click(); –

答えて

1

私はあなたが右のselect要素を見つけていると思ういけません。あなたが試しているものは可視状態ではなく、隠されています(可視:なし)。

[Search by Agency]ドロップダウンの矢印を見つけて要素を見つけてクリックすると、ドロップダウンが表示されます。私はxpathにaria-owns属性を含めるのかどうかはわかりませんが、簡単な方法です。あなたはそれを見ることができます。

"//div[@id='searchDiv']//span[@aria-owns='ddlRegion_listbox']//span[@class='k-select']" 

div [@ id = 'regionSelectPopup']が表示されるまで待つ必要があります。 Webdriverwaitに可視性の期待条件を付けてください。

次に、divで使用するオプションを選択できます。私はALLのためにやった。それをパラメータ化する必要があります。クリックして。

"//div[@id='regionSelectPopup']//label[.='ALL']/preceding-sibling::input[@type='checkbox']" 

ラベルでも機能し、チェックボックスが見つからない場合があります。

これはうまくいきます。

 WebDriver driver = new FirefoxDriver();    
    driver.manage().window().maximize();   

    driver.get("http://preview.harriscountyfws.org/"); 

    WebElement agencySearchSelect = driver.findElement(
      By.xpath("//div[@id='searchDiv']//span[@aria-owns='ddlRegion_listbox']//span[@class='k-select']")); 

    agencySearchSelect.click(); 

    new WebDriverWait(driver, 3, 100).until(ExpectedConditions.visibilityOfElementLocated(
      By.id("regionSelectPopup"))); 

    WebElement agencyOption = driver.findElement(
      By.xpath("//div[@id='regionSelectPopup']//label[.='ALL']/preceding-sibling::input[@type='checkbox']")); 

    agencyOption.click(); 
+0

Grasshopper:私はSeleniumを初めて使ったので、そのうちのいくつかを手に入れました。ここでは、前に示したコードの前に、クリックを達成するために追加したコードを表示してからオプションを選択しようとしていますが、別の例外があります。表示されるコードの前に追加したコードは次のとおりです。 WebElement listbox_element; listbox_element = driver.findElement(BycssSelector( "span [aria-owns = 'ddlRegion_listbox']")); listbox_element.click(); <私が前に共有したコードに続き> –

+0

あなたのコードが動作します:) xpathの中に何が入っているかをどうやって把握していますか?中国語に見えます。私はそこで何をする必要があるかを理解するための説明書がありますか、あるいはもっとhtmlや何かを学ぶ必要がありますか?どうもありがとう!私は後で答えを受け入れるだろう。私は、誰かが共有したいと思うかもしれないコメントについて質問を開いたままにしておきたい、そして、後で誰も何か言いたいことがないなら、答えを受け入れるだろう。 –

+0

Seleniumは、あなたがプレイしたいHTML要素を探し出しています。あなたはそれらを持っていない場合、あなたはCSSやXPathを使用する必要があります。あなたが何らかのウェブページ作業をしたことがあるならば、CSSはよく知られているはずです。そうでなければ、それを手に入れなければならない。 CSSとxpathのほとんどはFirefoxやFirebugのようなブラウザやツールから入手できます。しかし、あなたはそれらを微調整するために行く。ハッピーラーニング。 – Grasshopper

関連する問題