2017-01-29 5 views
0

Я недавно начал работу над 0OCPOC для моего проекта и используя я использую IE browser. Я пытаюсь щелкнуть по раскрывающемуся ящику, который, по-видимому, находится в теге <div>, однако тэг div не отображается/скрыт на загрузке страницы и появляется только в DOM после щелчка по пользовательскому интерфейсу. Как я найти скрытый div и нажмите на чтоКак найти скрытый элемент div с помощью драйвера Selenium Web

<DIV class="rfdSelectBox rfdSelectBox_Vista rfdSelectBoxDropDown" id=rfdSubMenu1485730150408 style="WIDTH: 188px; OVERFLOW-Y: auto; POSITION: absolute; LEFT: 746px; DISPLAY: none; TOP: 108px; VISIBILITY: hidden" rfdParentID="Skinnedctl00_ChangeGroupPopup_C_ddlCategory11"><UL> 
 
<LI class=rfdSelect_selected unselectable="on">Select</LI> 
 
<LI unselectable="on">Direct Reports</LI> 
 
<LI unselectable="on">9 Box</LI> 
 
<LI unselectable="on">Group</LI> 
 
<LI unselectable="on">Manager Level</LI> 
 
<LI unselectable="on">Functional Team</LI> 
 
<LI unselectable="on">Job Function</LI> 
 
<LI unselectable="on">Indirect/My Lane</LI> 
 
<LI unselectable="on">Custom Group</LI> 
 
<LI unselectable="on">Functional Team Leader</LI> 
 
<LI unselectable="on">Quartile</LI> 
 
<LI unselectable="on">No Existing Recommendation</LI> 
 
<LI unselectable="on">ALL</LI> 
 
<LI unselectable="on">TeamMate</LI></UL></DIV>

Я пытался искать какое-то решение этой проблемы и нашли некоторые вещи, как показано ниже:

WebDriverWait wait=new WebDriverWait(driver,20); 
WebElement element=wait.until(ExpectedConditions.visibilityOfElementLocated(add)); 
Actions builder = new Actions(driver); 
builder.keyDown(Keys.CONTROL).click(element.findElement(add)).sendKeys(Keys.ENTER).moveByOffset(10, 25).click(element.findElement(categoryDropDown)).sendKeys(Keys.ENTER).keyUp(Keys.CONTROL).build().perform(); 

Примечание: По какой-то причине .click() не работает для меня, поэтому я использовал .sendKeys(keys.Enter) вместо .click()

+0

Что такое элемент 'добавить', что вы используете в качестве отправной точки? Является ли контейнер контейнером, о котором вы упомянули, получил какой-то родительский атрибут «rfdParentID». – Grasshopper

+0

Add - одна из кнопок в пользовательском интерфейсе, которую я пытаюсь щелкнуть, даже до того, как я нажму на раскрывающийся список, в основном логика, которую я пытаюсь реализовать, предлагает щелкнуть в другом месте на экране, а затем перейти к раскрывающемуся списку. –

ответ

1

Selenium был разработан таким образом, что он не позволяет взаимодействовать с элементами, которые не видны на DOM. Он предназначен для выполнения действий, которые пользователь может сделать вручную.

Итак, есть два способа, с помощью которого вы можете выполнить это действие: -

  1. Выполните шаги на пользовательском интерфейсе, что делает элемент видимым, а затем взаимодействовать с тем же.
  2. Вы можете использовать JavaScript для выполнения действий со всеми элементами, присутствующими в DOM, будь то видимыми/скрытыми, вы можете использовать приведенный ниже код, чтобы щелкнуть элемент.

    JavascriptExecutor js = (JavascriptExecutor)driver; js.executeScript("arguments[0].click();", element);

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