2017-02-03 10 views
0

2つのドロップダウンからアイテムを選択してボタンをクリックするSeleniumでテストを作成しようとしています。私が実行している問題は、最初のドロップダウンから選択した項目に応じて、2番目のドロップダウンにanglejsコールが設定されていることです。なんらかの理由で角張った呼び出しは決して実行されず、2番目のリストには決してデータが取り込まれず、エラーが発生します。値が変わったときにangularjsの呼び出しが実行されないのはなぜですか?ドロップダウンのドロップダウンからアイテムを選択しても、Seleniumを使用してangularjs関数が実行されない

サンプル:

<select id="itemList" style="width:495px;" onchange="angular.element($(this)).scope().itemChanged(this);"> 
    <option value="item1">Item 1</option> 
    <option value="item2">Item 2</option> 
    <option value="item3">Item 3</option> 
</select> 

セレンコード:

SelectElement item = new SelectElement(driver.FindElement(By.Id("itemList"))); 
item.SelectByText("Item 2"); 

それが適切に最初のドロップダウンから項目を選びますが、何らかの理由で角度コールが第二の移入に実行されません。落ちる;その通話をどのように実行できますか?

答えて

0

これを解決するには、最初のドロップダウンがポピュレートされた後にangle関数を呼び出したonchange()イベントを手動でトリガーします。

IJavaScriptExecutor jse = (IJavaScriptExecutor)driver; 
jse.ExecuteScript("$(arguments[0]).change();", driver.FindElement(By.Id("itemList"))); 
0

トリガされていない(クリックした後、選択した後など)場合、セレンを使用してこのトリガを強制することはできません。あなたはいくつかのJavaScriptを使用して強制することができます。 しかしselectの代わりにclick()を試してみることをおすすめします。

+0

また、すべてのオプションを取得して、正しいoption.Click();をクリックしてみましたが、結果は同じようです。選択された値は正しいが、その関数は実行されない。 – Justin

関連する問題