Selenium C# 'OpenQA.Selenium.ElementNotVisibleException&

本文关键字:Selenium ElementNotVisibleException OpenQA | 更新日期: 2023-09-27 18:09:24

我正在尝试访问一个单选按钮。从我的研究中,我发现元素使用了名称,因为单选按钮的元素具有相同的名称。我想选择第二个按钮,但是我得到一个元素不可见的异常,并且返回的元素的位置属性在窗口之外。但是,我可以在页面上看到元素。

异常:一个类型为"OpenQA.Selenium"的异常。ElementNotVisibleException'在WebDriver.dll中发生,但未在用户代码中处理

ReadOnlyCollection<IWebElement> webElements = webElement.FindElements(By.Name("thename"));
webElements[1].SendKeys(Keys.Return);

我试图移动到使用执行javascript以及动作方法的位置。既不工作。

我尝试了所有可能的键发送到Actions方法的click:

Actions actions = new Actions(webDriver);
actions.MoveToElement(webElements[1]);
actions.SendKeys(Keys.Return);
actions.SendKeys(Keys.Enter);
actions.SendKeys(Keys.ArrowDown);
actions.Click();
actions.Perform();

对于javascript执行器,我尝试了两种方法。滚动到视图中,并且滚动到webElement[1]的Location属性告诉我它偏离了。

IJavaScriptExecutor js = webDriver as IJavaScriptExecutor;
string title = (string)js.ExecuteScript("arguments[0].scrollIntoView(true);", webElements[1]);
string title1 = (string)js.ExecuteScript("javascript:window.scrollBy(557329,136);");

我仍然得到位置不可见的异常

Selenium C# 'OpenQA.Selenium.ElementNotVisibleException&

您可以做的快速检查是在浏览器中打开开发人员工具,并在控制台中查看document.querySelector("[name='thename']")是否找到元素。如果不是,可能该元素在iframe中,或者您使用的名称可能有错别字。您还需要确保您试图访问的单选按钮位于DOM树中的"webElement"下面。也有可能在检查元素时页面仍在加载。要检查这一点,请在尝试查找元素之前等待,以便页面可以完全加载。