元素<option>无法滚动到视图C#Selenium

时间:2019-08-14 10:04:52

标签: c# selenium-webdriver

我正在尝试从下拉列表中选择选项,但它返回错误: 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#。有人可以帮我吗?

2 个答案:

答案 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类按值选择元素。