我正在尝试从下拉列表中选择选项,但它返回错误: OpenQA.Selenium.ElementNotInteractableException:元素无法滚动到视图中。
选择表单如下:
<div ...>
<dd id="names-element">
<select name="names", id="names", tabindex="-1", style="display: none">
<option value="Ann">Ann</option>
<option value="Jon">Jon</option>
<option value="Mike">Mike</option>
<option value="Lisa">Lisa</option>
</select>
</dd>
</div>
我的代码:
IWebElement namesElement = driver.FindElement(By.Id("names"));
SelectElement namesSelect = new SelectElement(namesElement );
namesSelect.SelectByValue("Jon");
我尝试使用喜欢的webwait:
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0, 0, 10));
wait.Until(ExpectedConditions.ElementToBeClickable(namesElement));
但是此时它返回: OpenQA.Selenium.WebDriverTimeoutException:10秒后超时
然后我尝试使用javascript执行程序:
IJavaScriptExecutor je = (IJavaScriptExecutor)driver;
je.ExecuteScript("arguments[0].click();", namesElement);
但是之后它再次返回: OpenQA.Selenium.ElementNotInteractableException:无法将元素滚动到视图中。
我实际上是Selenium的新手,并且更喜欢python,但此时需要使用C#。有人可以帮我吗?
答案 0 :(得分:0)
尝试使用javascript之类滚动到该元素:
IWebElement namesElement = driver.FindElement(By.Id("names"));
driver.ExecuteScript("arguments[0].scrollIntoView(true);", namesElement);
SelectElement namesSelect = new SelectElement(namesElement );
namesSelect.SelectByValue("Jon");
答案 1 :(得分:0)
style="display: none"
表示该元素在网页上不可见。
确保这是唯一的标识符。有时,DOM中有多个元素具有完全相同的标识符,但是,唯一的区别是stype="dispay: block"
确定标识符绝对正确后,即可使用SelectElement
类按值选择元素。