2016-07-27 3 views
0

C#webdriverのドロップダウン値を選択する際に問題があります。私は、WebドライバC#で隠された要素にアクセスすることを研究しましたが、実行可能な解決策を見つけることができませんでした。これまでのところ、私はActionsメソッドとJavaスクリプトExecutorを試しましたが、何が間違っているのかはわかりません。私は、オートメーションとC#言語を使用するのはかなり新しいです。ドロップダウンリストから隠し値を選択するC#webdriver

これは私が構文が間違っている場合はわからない、だけでなくJavaスクリプトに新しいです

((IJavaScriptExecutor)wd).ExecuteScript("arguments[0].Click()"); 
wd.FindElement(By.XPath("//input[@value = Bridget]")); 
String("arguments[0].trigger('click')"); 
wd.FindElement(By.XPath("//input[@value = Bridget]")); 

のJavaスクリプトエグゼキュータ

を使用して、アクションメソッド

IWebElement actionsMenu = driver.FindElement(By.Id("InitiatorID")); 
Actions action = new Actions (driver); 
action.MoveToElement(actionsMenu).Build().Perform();  
driver.FindElement(By.CssSelector("[index ='2']")).Click();**/ 

スクリプトを使用して、私の次のコードです。 これはHTML

<div class="question"> 
    <label for="InitiatorID">Initiator:</label> 
    <div id="InitiatorID_chzn" class="chzn-container chzn-container-single" style="width: 270px;"> 
     <a href="javascript:void(0)" class="chzn-single" tabindex="-1"> 
     <span>Not Assigned</span> 
     </a> 
     <div class="chzn-drop" style="left: -9000px; width: 268px; top: 24px;"> 
     <div class="chzn-search"> 
      <input type="text" autocomplete="off" style="width: 233px;" tabindex="-1"> 
     </div> 
     <ul class="chzn-results"> 
      <li id="InitiatorID_chzn_o_0" class="active-result result-selected" style="">Not Assigned</li> 
     </div> 

は、誰かがこの問題を解決する上で助けてくださいです。ご協力いただきありがとうございます。

+0

これは、値をクリックしたときにのみ表示される未表示のカテゴリのドロップダウンリストです。私が提案する解決策は、最初にあなたがクリックする必要がある要素を見つけることです。そして、element.clickを使用してください。あなたが要素をクリックしたときULとLIタグのhtmlコードを見てください。確かに、ULとLIを識別するためのhtmlコードを見ることができます。すべてのLIタグを取り込み、各値を繰り返して、それをクリックします。同じ問題で実行されているスレッド。 googleしてください。 – Siva

答えて

0

あなたは物事を複雑にしていると思います。アクションを使用して要素を手動で移動する必要はありません。あなたは次のことを試すことができますか?

//Find the dropdown container and click it 
IWebElement actionMenu = driver.FindElement(By.Id("InitiatorID")); 
actionMenu.Click(); //Feel free to condense this to just driver.FindElement().Click(); 

//Find the now visible option and click it 
driver.FindElement(By.XPath("//input[@value = Bridget]")).Click(); 
+0

それは、代わりにホバリングで拡大するメニューだと、それは異なっている、私は質問を誤解している可能性があります。ただ私に知らせてください、私はそれを変更しようとします。 –

+0

こんにちはChai/Parker、関連する手動操作は次のとおりです。ドロップダウンをクリックし、ドロップダウンから値をクリックします。だから、私のコードは表示されていないので、現在はドロップダウンをクリックしていません。 – Kalaivani

+0

'SelectElement'はSELECTタグでのみ機能します。これはドロップダウンが実際には 'SELECT'タグではないので、このコードは動作しません。 – JeffC

1

私はそれはしかし、私はとにかく試してみましょうことができますかどうかわからないです:すべての

まず、セレンwebdriverをあなたが手動で行うことができますものを自動化するための基本的です。手動で非表示の要素をクリックすることはできません。したがって、セレンを使用することもできません。おそらく手動でその値を選択することができれば、ドロップダウンメニューを開くためにクリックするか、またはドロップダウンメニューを開くためにParker Beckが要素の上にホバリングすることを示唆するようないくつかのステップがあります。次に、要素が表示されてアクティブになったら、それをクリックすることができます。 セレンを使用すると、同じ手順をすべて自動化する必要があります。

答えが少しシンプルです:要素action.MoveToElement(actionsMenu).Build().Perform();に移動した後、クリックする前にちょっと待たなければならないかもしれないし、ウェブドライバが速すぎるかもしれません! 待つ多くの方法があります。ちょっと検索するだけで、それについてたくさんのトピックが見つかります!

action.MoveToElement(actionsMenu).Build()。Perform(); ==>はマウスポインタだけを移動します。クリックしないので、次の要素は表示されません。手動で2回クリックする必要がある場合は、セレンコードも2回クリックする必要があります。私が今まで理解していることから、あなたは最初のクリックを見逃すかもしれません。

+0

私は「これは質問への答えを提供しません」と同意します。 –

関連する問題