Элемент не виден при вызове метода click

Я пытаюсь открыть </li> элемент с этим кодом:

DropDownElementByText("language-dd", "Englisch");

public void DropDownElementByText(string elementId, string text)
    {
        using (var dr = new ChromeDriver {Url = "https://www.startpage.com/deu/advanced-search.html"})
        {
            dr.Manage().Window.Maximize();

            var wait = new WebDriverWait(dr, TimeSpan.FromSeconds(10));
            IWebElement languageDropDown = wait.Until(d => d.FindElement(By.XPath("//div[@id='" + elementId + "']/ul")));

            //new Actions(dr).MoveToElement(languageDropDown).Perform();

            ReadOnlyCollection<IWebElement> languages = languageDropDown.FindElements(By.TagName("li"));
            foreach (IWebElement li in languages)
            {
                IWebElement a = dr.FindElement(By.XPath("//div[@id='" + elementId + "']/ul/li/a[text()='" + text + "']"));

                if (a != null)
                {
                    new Actions(dr).MoveToElement(li).Perform();
                    //li.Click();
                    li.SendKeys(Keys.Enter);
                    break;
                }
            }

        }
    }

Но li.SendKeys(Keys.Enter) или же li.Click() оба дают мне "Метод тестирования SeleniumTests.SeleniumTests.TestMethod1 вызвал исключение: OpenQA.Selenium.ElementNotVisibleException: элемент не виден"

1 ответ

Решение

Я не уверен, почему вы создавали Iwebelement a и почему вы используете SendKeys, если клик работает.

Вот код обновления (который работает для меня):

 var dropdown = Driver.FindElement(By.XPath("//*[@id='language-dd']"));
var coll = Driver.FindElements(By.XPath("//*[@id='language-dd']/ul/li"));
foreach (var item in coll)
{
    dropdown.Click();
    item.WaitForElementToBeClickable(30);
    item.Click();
}

public static void WaitForElementToBeClickable(this IWebElement element, int timeout)
{
    new WebDriverWait(Driver, TimeSpan.FromSeconds(timeout)).Until(ExpectedConditions.ElementToBeClickable(element));
}
Другие вопросы по тегам