我正在尝试使用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");
它从第一个下拉列表中正确选择项目,但由于某种原因,角度调用不会运行以填充第二个下拉列表;我怎样才能打电话?
答案 0 :(得分:0)
如果未按原样触发硒,则无法强制执行此触发(单击,选择或其他后)。你可以通过使用一些JavaScript强制它。
但我建议您尝试使用click()
代替select
。
答案 1 :(得分:0)
我能够通过手动触发onchange()事件来解决这个问题,该事件在第一个下拉列表被填充后调用了angular函数。
IJavaScriptExecutor jse = (IJavaScriptExecutor)driver;
jse.ExecuteScript("$(arguments[0]).change();", driver.FindElement(By.Id("itemList")));