2017-01-29 1 views
0

Ich habe vor kurzem begonnen, an der selenium POC für mein Projekt zu arbeiten und ich benutze IE browser. Ich versuche, auf eine Dropdown-Box zu klicken, die anscheinend in einem <div>-Tag liegt, aber das div-Tag ist nicht sichtbar/versteckt auf der Seite laden und nur im DOM angezeigt, sobald es über die Benutzeroberfläche geklickt hat. Wie kann ich eine versteckte div lokalisieren und klicken Sie auf dasWie finde ich ein verstecktes div Element mit Selenium Web Treiber

<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>

Ich habe versucht, einige Lösung für dieses Problem zu suchen und etwas, was wie unten gefunden haben:

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

Hinweis: Aus irgendeinem Grund .click() funktioniert nicht für mich, so habe ichverwendetanstelle von .click()

+0

Was ist das Element 'Hinzufügen', die Sie als Ausgangspunkt verwenden? Ist es der Container becoz das Div, das Sie erwähnt haben, hat eine Art Elternattribut 'rfdParentID'. – Grasshopper

+0

Hinzufügen ist eine der Schaltflächen auf der Benutzeroberfläche, auf die ich klicken möchte, noch bevor ich auf das Drop-down klicke. Im Grunde schlägt die Logik, die ich implementieren wollte, vor, irgendwo anders auf den Bildschirm zu klicken und dann auf das Dropdown zu klicken. –

Antwort

1

Selen wurde so entworfen, dass es nicht mit Elementen interagieren kann, die auf DOM nicht sichtbar sind. Es wurde entwickelt, um die Aktionen auszuführen, die der Benutzer manuell ausführen kann.

So gibt es zwei Möglichkeiten, mit denen Sie diese Aktion durchführen können: -

  1. die Schritte auf UI durchführen, die das Element sichtbar und dann interagieren mit der gleichen macht.
  2. Sie können JavaScript verwenden, um die Aktionen mit allen im DOM vorhandenen Elementen auszuführen, sei es sichtbar/verborgen, Sie können den folgenden Code verwenden, um auf das Element zu klicken.

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

Verwandte Themen