Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从下拉列表中选择项目不会';t使用Selenium启动angularjs函数_Javascript_Angularjs_Selenium_Selenium Webdriver - Fatal编程技术网

Javascript 从下拉列表中选择项目不会';t使用Selenium启动angularjs函数

Javascript 从下拉列表中选择项目不会';t使用Selenium启动angularjs函数,javascript,angularjs,selenium,selenium-webdriver,Javascript,Angularjs,Selenium,Selenium Webdriver,我试图用Selenium编写一个测试,从2个下拉列表中选择一个项目,然后单击一个按钮。我遇到的问题是,根据从第一个下拉列表中选择的项目,第二个下拉列表由angularjs调用填充。由于某些原因,angular调用从未运行,第二个列表从未填充,并导致错误。为什么在值更改时不执行angularjs调用 下拉列表示例: <select id="itemList" style="width:495px;" onchange="angular.element($(this)).scope().ite

我试图用Selenium编写一个测试,从2个下拉列表中选择一个项目,然后单击一个按钮。我遇到的问题是,根据从第一个下拉列表中选择的项目,第二个下拉列表由angularjs调用填充。由于某些原因,angular调用从未运行,第二个列表从未填充,并导致错误。为什么在值更改时不执行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>

它正确地从第一个下拉列表中选择项目,但是由于某些原因,angular调用没有运行以填充第二个下拉列表;如何运行该调用?

如果selenium没有按应有的方式触发(单击、选择或其他操作后),则无法使用selenium强制执行该触发。您可以通过使用一些javascript强制执行它。
但是我建议您尝试使用
click()
而不是
select

我可以通过手动触发onchange()事件来解决这个问题,该事件在填充第一个下拉列表后调用角度函数

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

我还尝试获取所有选项并单击正确的选项但结果似乎是一样的。选择的值是正确的,但该函数不会执行。
IJavaScriptExecutor jse = (IJavaScriptExecutor)driver;
jse.ExecuteScript("$(arguments[0]).change();", driver.FindElement(By.Id("itemList")));