【发布时间】:2017-11-09 00:47:25
【问题描述】:
我想在下拉字段中选择项目。该页面使用 Materialize CSS,我使用的是 Selenium webdriver C#。
我最后一次尝试是:
IWebElement tipoLoja = driver.FindElement(By.XPath("//select[@id='tipo_empresa']"));
SelectElement selectTipoLoja = new SelectElement(tipoLoja);
selectTipoLoja.SelectByValue("0");
但结果是:
OpenQA.Selenium.NoSuchElementException:无法定位元素://select[@id='tipo_empresa']
HTML 代码:
<br>
<div class="input-field col s12 m4 l4 ">
<div class="select-wrapper">
<span class="caret">▼</span>
<input class="select-dropdown" readonly="true" data-activates="select-options-fe6e0db4-d829-b47a-86e7-0a3d5b55e74e" value="Selecione" type="text">
<ul id="select-options-fe6e0db4-d829-b47a-86e7-0a3d5b55e74e" class="dropdown-content select-dropdown ">
<li class="disabled "></li>
<li class=""></li>
<li class=""></li>
<li class=""></li>
</ul>
<select data-val="true" data-val-required="Informe o Tipo da Loja." id="tipo_empresa" name="TipoLoja">
<option value="" disabled="disabled" selected="selected">Selecione</option>
<option value="0">Matriz</option>
<option value="1">Filial</option>
<option value="2">Centro de Distribuição</option>
</select>
</div>
<label for="tipo_empresa">Tipo da Loja*</label>
</div>
【问题讨论】:
-
欢迎来到stackoverflow!请将
html放在问题本身中,因为链接会过时,并且像我这样的一些人无法访问外部站点。否则,如果您在执行此行之前等待几秒钟,这在调试时是否有效?driver.FindElement(By.XPath("//select[@id='tipo_empresa']"));? -
从 HTML 来看,
SELECT可能是隐藏的,它上面的UL用作下拉菜单。尝试单击UL,然后单击带有所需文本的LI。另外,当您所做的只是与 ID 交互时,为什么还要使用 XPath?只需使用By.Id()。 -
对不起@mrfreester 我已经把代码放在问题中了。我还没试过这个。我会试试的。
-
@JeffC,问题是我不知道它是否与 ID 一起使用的代码,因为 ID 行位于代码的末尾。但我会尝试使用 ID。
-
我尝试使用选择
By.Id()但没有成功。IWebElement tipoLoja = driver.FindElement(By.Id("tipo_empresa")); SelectElement selectTipoLoja = new SelectElement(tipoLoja); selectTipoLoja.SelectByText("Filial");结果是 >OpenQA.Selenium.ElementNotVisibleException :
标签: c# selenium xpath selenium-webdriver css-selectors