2016-06-29 7 views
0

Dropdown-Werte in Selen können nicht ausgewählt werden.Dropdown-Werte in Selen nicht auswählbar

HTML-Code ist:

Dieser Code wird verwendet zur Auswahl - Wählen Sie Kunde -

<div id="createTasksPopup_customerSelector" class="customerOrProjectSelector selectorWithPlaceholderContainer at-dropdown-list-btn-ct notSelected"> 
    <table id="ext-comp-1057" class="x-btn-wrap x-btn at-dropdown-list-btn x-btn-over x-btn-focus" cellspacing="0" cellpadding="0" border="0" style="width: auto;"> 
     <tbody> 
      <tr id="ext-gen397" class=" x-btn-with-menu"> 
        <td class="x-btn-left"> 
         <td class="x-btn-center"> 
          <em unselectable="on"> 
           <button id="ext-gen391" class="x-btn-text" type="button">- Select Customer -</button> 
          </em> 
         </td> 
       <td class="x-btn-right"> 
      </tr> 
     </tbody> 
    </table> 
</div> 

Jetzt muss ich wählen - ALLE aktiven Kunden -

<div id="ext-gen613" class="x-layer x-menu at-dropdown-list-btn-menu customerProjectListSelector customerListSelector createTasksCustomerProjectSelector" style="position: absolute; z-index: 15000; visibility: visible; left: 360px; top: 163px;"> 
    <a id="ext-gen616" class="x-menu-focus" tabindex="-1" onclick="return false;" href="#"/> 
     <ul id="ext-gen617" class="x-menu-list"> 
      <li id="ext-gen621" class="x-menu-list-item "> 
      <li id="ext-gen623" class="x-menu-list-item "> 
      <li id="ext-gen625" class="x-menu-list-item x-menu-item-active"> 
       <a id="ext-gen626" class="x-menu-item" href="#"> 
        <img class="x-menu-item-icon " src="/img/default/extjs/s.gif?hash=970179041"/> 
         - ALL ACTIVE CUSTOMERS - 
       </a> 
      </li> 
     <li id="ext-gen627" class="x-menu-list-item "> 
</ul> 

enter image description here

Code

driver.findElement(By.xpath(ObjRepoProp.getProperty("selectCustomer_XPATH")))‌​.click(); 
Actions act = new Actions(driver); 
act.sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOW‌​N).sendKeys(Keys.ENTER).perform(); 
Thread.sleep(5000); 

Vielen Dank im Voraus

+0

Mein Code ist: driver.findElement (By.xpath (ObjRepoProp.getProperty ("selectCustomer_XPATH"))). Click(); \t \t Aktionen act = neue Aktionen (driver); \t \t act.sendKeys (Schlüssel.ARROW_DOWN) .sendKeys (Keys.ARROW_DOWN) .sendKeys (Keys.ARROW_DOWN) .sendKeys (Keys.ENTER) .perform(); \t \t Thread.sleep (5000); – karthik

+0

Es sieht wie eine 'ExtJs'-Komponente aus ... Sie können einen Wert aus dem Dropdown mit java-Skript auswählen, wenn Sie etwas über' ExtJs' wissen, da es ein Menü in extJs ist und in ihrer Bibliothek die Funktion –

+0

anbietet führe einfach diese 'Ext.getCmp (" ext-comp-1057 ")' in deiner Browser Konsole aus und lass mich wissen, was du bekommst ... –

Antwort

0

die Auswahl in der Drop-Down-Fälschung sind alle A Tags. Sie sollten klicken können, um das Dropdown zu öffnen, und dann auf die A klicken, die den gewünschten Text enthält. Probieren Sie den folgenden Code aus.

String searchText = "- ALL ACTIVE CUSTOMERS -"; 
driver.findElement(By.xpath(ObjRepoProp.getProperty("selectCustomer_XPATH"))).click(); 
List<WebElement> links = driver.findElements(By.cssSelector("#ext-gen617 a")); 
for (WebElement link : links) 
{ 
    // this may need to be .contains() instead of .equals() 
    if (link.getText().trim().equals(searchText)) 
    { 
     link.click(); 
     break; 
    } 
} 

HINWEIS: Wenn die IDs dynamisch ist, kann ich nicht sagen, was es zu ändern, ohne die Seite zu sehen und ein paar Mal in der Lage, zu aktualisieren und sehen, welche Änderungen und was nicht. Ich würde mit dem Bearbeiten des CSS-Selektors beginnen. Vielleicht versuchen Sie ein paar der unten und sehen, ob irgendwelche Arbeit.

driver.findElements(By.cssSelector("div.customerProjectListSelector a")); 
driver.findElements(By.cssSelector("div.customerListSelector a")); 
driver.findElements(By.cssSelector("div.createTasksCustomerProjectSelector a")); 
+0

hi driver.findElements (By.cssSelector ("# ext-gen617 a")); hier ändert sich "# ext-gen617 a" dynamisch, wie man mit diesen umgehen kann ... im Moment kann ich nur den Kunden auswählen. – karthik

+0

Ich aktualisierte die Antwort für ein paar Dinge zu versuchen, aber ohne die Seite zu sehen, bin ich mir nicht sicher, was ich sonst ohne weitere Informationen versuchen könnte. – JeffC

0

Geben Sie einen Versuch unter Ansatz:

Select dropdown = new Select(driver.findElement(By.id("createTasksPopup_customerSelector"))); 
dropdown.selectByVisibleText("- ALL ACTIVE CUSTOMERS -"); 

Hinweis: - Sie auch xpath statt Id verwenden können.

Lassen Sie mich wissen, wenn Sie irgendein Problem haben.