从下拉列表中选择项目并不会使用Selenium启动angularjs功能

时间:2017-02-03 14:25:40

标签: javascript angularjs selenium selenium-webdriver

我正在尝试使用Selenium编写测试,从2个下拉列表中选择一个项目,然后单击一个按钮。我遇到的问题是第二个下拉列表由angularjs调用填充,具体取决于从第一个下拉列表中选择的项目。由于某种原因,角度调用永远不会运行,第二个列表永远不会被填充并导致错误。为什么当值改变时,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>

Selenium代码:

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

它从第一个下拉列表中正确选择项目,但由于某种原因,角度调用不会运行以填充第二个下拉列表;我怎样才能打电话?

2 个答案:

答案 0 :(得分:0)

如果未按原样触发硒,则无法强制执行此触发(单击,选择或其他后)。你可以通过使用一些JavaScript强制它。 但我建议您尝试使用click()代替select

答案 1 :(得分:0)

我能够通过手动触发onchange()事件来解决这个问题,该事件在第一个下拉列表被填充后调用了angular函数。

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