硒试图找到一个选项时会抛出NoSuchElementException,即使该选项存在

时间:2018-11-07 19:05:06

标签: c# jquery selenium nosuchelementexception

以前运行的脚本之一当前正在失败,我无法对其进行调试。

硒在下面的行上抛出NoSuchElementException

SelectPrimeraCompetencia.SelectByText(valorCompetencia, true);

valorCompetencia的值为APR,因此该行变为:

SelectPrimeraCompetencia.SelectByText(APR, true);

SelectPrimeraCompetencia代表SelectElement,具有以下代码:

<select class="w100x100" data-notrack="true" data-bind="
								 options: $root.sistemasCalificacionValor
								,optionsText:'clave'
								,value: sistemaCalificacionValorSeleccionado
								,optionsCaption: ''
								,enable: !$root.soloLectura()
								,css: { 'disabled' : $root.soloLectura }
						">
  <option value=""></option>
  <option value="">SUS</option>
  <option value="">APR</option>
</select>

如您所见,第三个选项的文本为APR

如果我在运行时检查SelectPrimeraCompetencia,我们可以看到以下选项:

SelectElement at runtime

确认索引2文本处的选项为APR

但是仍然出现异常:

enter image description here

感谢您的帮助。

致谢。

2 个答案:

答案 0 :(得分:0)

我看到“已启用”和“已禁用”的内联属性。我对代码不熟悉,所以我最好的猜测是webdriver认为该元素无法进行交互。您可以尝试以其他方式选择元素来证明或否定我的猜测。

https://stackoverflow.com/a/18662992/2092742

  

您需要使用JavaScriptExecutor来完成此任务,WebDriver无法单击已禁用或不可见的元素。因此,尝试类似

JavascriptExecutor js = (JavascriptExecutor) webDriver;
js.executeScript("document.querySelector(\"button[id=yourButton]\").click()");

答案 1 :(得分:0)

如何遍历select元素的选项并按索引选择选项。

这可能看起来像这样:

apply