2015-08-21 3 views
0

Я пытаюсь получить доступ к переключателю. Из моего исследования я нашел элемент с именем, так как элементы радиокнопки имеют одно и то же имя. Я хочу выбрать вторую кнопку, но я получаю исключение элемента, а не свойство location возвращаемого элемента вне окна. Однако, я вижу элемент на странице.Ошибка Selenium C# 'OpenQA.Selenium.ElementNotVisibleException'

Исключение: исключение типа «OpenQA.Selenium.ElementNotVisibleException» произошло в WebDriver.dll, но не был обработан в пользовательском коде

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

Я пытался переместить на место с помощью выполнения JavaScript, а также метод «Действия». Ничего не сработало.

Я перепробовал все возможные ключи для отправки нажмите для метода действий:

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(); 

Для яваскрипта исполнителя я попробовал два метода. Чтобы прокрутить список до просмотра и прокрутить по количеству, которое свойство Location для webElement [1] сообщило мне, что оно выключено.

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);"); 

Я все еще продолжаю получать исключение, не являющееся видимым местом.

+0

Возможно, я что-то не понял, но вы ищете радиокнопку ... почему вы отправляете ключ ENTER вместо того, чтобы делать '.Click()'? Вы уверены, что переключатель, который вы видите на странице, на самом деле является вторым элементом с этим именем? Возможно, есть некоторые скрытые элементы с тем же именем. Попробуйте 'webElements [1] .GetAttribute (" externalHTML ");' и посмотрите, возвращает ли это HTML-тег, который вы ищете. – JeffC

+0

Я бы лучше взглянул на 'html'. У меня есть предыдущий опыт работы с переключателем, который фактически не является устаревшим переключателем. Можете ли вы поделиться html здесь, если возможно – Saifur

ответ

0

Быстрая проверка, которую вы можете сделать, - это открыть инструменты разработчика в браузере и в консоли, если элемент document.querySelector ("[name = 'thename']") находит этот элемент. Если нет, возможно, этот элемент находится в iframe или имя, которое вы используете, может иметь опечатку. Вы также захотите убедиться, что переключатель, который вы пытаетесь получить, находится ниже «webElement» в дереве DOM. Также возможно, что страница по-прежнему загружается, когда вы проверяете элемент. Чтобы проверить это, подождите, прежде чем пытаться найти элемент, чтобы страница могла загружаться полностью.

+0

Вы действительно хотите 'document.querySelectorAll (" [name = 'thename'] ") [1]', потому что вам нужен второй элемент. – JeffC

Смежные вопросы