2014-09-05 2 views
2

Ниже приводится HTMLэлемента не виден: Элемент в настоящее время не виден и не может манипулировать - Селен WebDriver

<div id="form1:customertype" class="ui-selectonemenu ui-widget ui-state-default ui-corner-all ui-state-hover" style="width: 165px;"> 
    <div class="ui-helper-hidden-accessible"> 
     <select id="form1:customertype_input" name="form1:customertype_input" tabindex="-1"> 
     <option value="S">Staff</option> 
     <option value="C">Customer</option> 
     <option value="N">New To Bank</option></select></div> 
    <div class="ui-helper-hidden-accessible"><input id="form1:customertype_focus" name="form1:customertype_focus" type="text" readonly="readonly"></div> 
    <label id="form1:customertype_label" class="ui-selectonemenu-label ui-inputfield ui-corner-all" style="width: 149px;">Staff</label> 
    <div class="ui-selectonemenu-trigger ui-state-default ui-corner-right ui-state-hover"><span class="ui-icon ui-icon-triangle-1-s ui-c"></span></div></div> 

Стилевая классы = «щ-хелперы скрытый доступным» является

ui-helper-hidden-accessible { 
     border: 0; 
     clip: rect(0 0 0 0); 
     height: 0px; 
     margin: -1px; 
     overflow: hidden; 
     padding: 0; 
     position: absolute; 
     width: 0px; 
    } 

Ниже мой код

WebElement customerType = driver.findElement(By.id("form1:customertype_input")); 
    Select select = new Select(customerType); 
    select.selectByVisibleText("New To Bank"); 

Когда я пытаюсь выбрать «New Банку» из выпадающего списка я получаю исключение Элемент не отображается: Элемент в настоящее время не виден и его невозможно обработать - Selenium webdriver

Я пробовал технику WebDriverWait, но бесполезно, никаких идей?

+0

Открывается раскрывающийся список? –

+0

Наверное, выпадающий снимок обернут. Обычно это происходит при создании джазового выпадающего списка. проверьте, действительно ли он скрыт. – Vinay

+0

Да, вручную открывается раскрывающийся список, а не код. Выпадающий экран визуально отображается на странице. –

ответ

0

попробуйте выполнить щелчок на CustomerType перед тем, как создать объект из Выбрать

+0

тот же результат :(Я получаю исключение в этой строке select.selectByVisibleText ("New To Банк »); –

+0

используйте какой-либо другой идентификатор, чтобы щелкнуть как индекс содержимого, поместить все теги опций в список и выбрать по номеру индекса 2, чтобы выбрать опцию _New To Bank_ –

0

Ну, я нашел работу вокруг, чтобы решить мою проблему, но я не доволен этим. в любом случае то, что я сделал, сосредоточено на элементе div, который управляет выпадающим меню, щелкая его, а затем дважды отправляя клавиши со стрелками, а затем введите ключ. Это выбирает мою желаемую опцию. Я использовал следующий метод

driver.switchTo().activeElement() 
0

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

Так я создаю сон для решаемой задачи:

sleep(1) 

P.S. - Это решение, которое мне действительно не нравится. Я просто указываю вам причину этого. Лучшее, что вы можете сделать, это проверить страницу, на которой у вас есть проблема, и попытаться оптимизировать время загрузки.

0

Я не верю, что текст для этой опции действительно отображается, прежде чем вы попытаетесь выбрать его. Вместо этого попробуйте выбрать значение.

WebElement customerType = driver.findElement(By.id("form1:customertype_input")); 
Select select = new Select(customerType); 
select.selectByValue("N"); 

Возможно, вам нужно будет на самом деле щелкнуть селектор, прежде чем выбрать параметр.

WebElement customerType = driver.findElement(By.id("form1:customertype_input")); 
new WebDriverWait(driver, 15).until(
      ExpectedConditions.elementToBeClickable(customerType)); 
customerType.click(); 

Select select = new Select(customerType); 
select.selectByValue("N"); 
Смежные вопросы