2013-12-04 2 views
1

Пожалуйста, любой может помочь мне, как выбрать параметры из раскрывающегося списка, если элемент не отображается и является логическим атрибутом. Вот тег html:Как сделать элемент видимым в selenium webdriver?

<select id="visualizationId" style="width: 120px; display: none;" name="visualization"> 
<option value="day">Day</option> 
<option value="week">Week</option> 
<option selected="" value="month">Month</option> 

Работаю над селеном webdriver. ниже код не работает нормально. Есть ли образец кода для выбора невидимого элемента.

Actions actions1 = new Actions(driver); 
WebElement dBox1= ((new WebDriverWait(driver,60)).until(ExpectedConditions.elementToBeClickable(By.id("visualizationId")))); 
selectByVisibleText("week"); 
actions1.moveToElement(dBox1); 
actions1.click(); 
actions1.perform(); 

При использовании ниже линии также я получаю сообщение об ошибке: Элемент не видимых в данный момент, и поэтому не может быть взаимодействовали с длительностью команд или тайм-аут: 32 миллисекунду

Select se=new Select(driver.findElement(By.id("visualizationId"))); 
se.selectByVisibleText("Week"); 

или

se.selectByValue("week"); 

См. Html, и там элемент не отображается. может ли кто-нибудь предложить мне, как сделать элемент видимым, тогда как я могу выбрать вариант.

+0

Возможный дубликат [Выбрать опцию из выпадающего элемента не видно] (http://stackoverflow.com/questions/20366703/select-option-from-dropdown-element-is-not-visible) – Akbar

ответ

0

Вы должны быть осторожны, когда используете родные API в селене. Такие вещи, как webElement.click() и т. Д., Относятся к элементам, с которыми пользователь сможет работать в окне браузера, а именно в виде видимых элементов.

Если выпадающее меню не видно, вы не можете использовать собственные API-интерфейсы для взаимодействия с ними.

Вы можете попробовать использовать javascript-исполнитель.

Вы, скорее всего, сможете взломать элемент select, чтобы получить нужное значение, выполнив что-то вроде: jsExecutor.executeScript (String.format ("arguments [0] .value = '% 1 $ s' ; ", valueToSet), selectWebElement);

Но если вы это сделаете, вы на самом деле не тестируете пользовательский интерфейс.

В противном случае вы также можете попытаться сделать его видимым, выполнив style.diyplay = 'block' (при условии, что родительский элемент виден).

Однако ваш пользовательский интерфейс должен каким-то образом дать вам естественный способ сделать видимым этот флажок. Используете ли вы компоненты первичных граней или такие виджеты, которые скрывают входные элементы и вместо этого делают «красивые» divs для имитации выпадающих списков и т. Д.? Если это так, взаимодействуйте с фиктивными виджетами, а не с собственными элементами ввода.

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