2016-07-25 9 views
0

Ich versuche Drop-Down-Wert durch Lesen Drop-Down-Wert von Excel zu wählen. Ich habe versucht, folgenden Code, aber es ist nicht Auswahl von Wert wie in Excel-Tabelle erwähnt. Für mich sind alle Daten korrekt in dem entsprechenden Feld außer Gender-Drop-Down.Selenium Web-Treiber wählen Sie Daten aus Drop-Down durch Lesen Drop-Down-Wert von Excel-Blatt

folgenden sind Screenshot der HTML-Code und UI:

UI Image

Xpath Information

HTML Code

Im Folgenden sind meine HTML-Code:

<td class="codetable last-cell" headers="N224AA-4-2"> 
<div id="widget___o3id7" class="dijit dijitReset dijitInline dijitLeft codetable dijitTextBox dijitComboBox" lang="en-US" role="listbox" dir="ltr" widgetid="__o3id7" aria-expanded="false"> 
<div class="dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer" role="presentation" data-dojo-attach-point="_buttonNode, _popupStateNode" popupactive="true"> 
<input class="dijitReset dijitInputField dijitArrowButtonInner" type="text" role="presentation" readonly="readonly" tabindex="-1" value="▼ "> 
</div> 
<div class="dijitReset dijitValidationContainer"> 
<input class="dijitReset dijitInputField dijitValidationIcon dijitValidationInner" type="text" role="presentation" readonly="readonly" tabindex="-1" value="Χ "> 
</div> 
<div class="dijitReset dijitInputField dijitInputContainer"> 
<input id="__o3id7" class="dijitReset dijitInputInner" type="text" aria-haspopup="true" role="textbox" data-dojo-attach-point="textbox,focusNode" autocomplete="off" aria-required="true" tabindex="0" title="Gender Mandatory" size="1" value="Male" aria-owns="__o3id7_popup" aria-activedescendant="__o3id7_popup1"> 
<input type="hidden" name="__o3id7" value="SX1"> 
</div> 
</div> 
</td> 

I populat ed Testdaten in Excel-Blatt, wie unten in den "Female" Drop-Down-Wert ist:

UserName password123 100000005 Elena Sawyerehde Female 

Im Folgenden sind mein Code:

package com.access; 

import org.openqa.selenium.*; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.support.ui.Select; 
import org.testng.Assert; 
import org.testng.annotations.*; 
import java.io.FileInputStream; 
import jxl.Sheet; 
import jxl.Workbook; 

public class Registration { 

    static WebDriver driver; 

     @BeforeMethod 
     public void setUp() throws Exception { 
     System.setProperty("webdriver.chrome.driver", "C:\\Directory\\chromedriver.exe"); 
     driver = new ChromeDriver(); 
     driver.manage().window().maximize(); 

     Thread.sleep(2000); 
     } 

     @Test 
     public void TestCase1() throws Exception { 
      FileInputStream fi=new FileInputStream("C:\\File\\Book2.xls"); 
      Workbook w=Workbook.getWorkbook(fi); 
      Sheet s=w.getSheet(0); 
     driver.get("https://example.com"); 

     try 
     { 
     for (int i = 0; i < s.getRows(); i++) 
     { 
     //Read data from excel sheet 
      String s1 = s.getCell(0,i).getContents(); 
      String s2 = s.getCell(1,i).getContents(); 
      String s3 = s.getCell(2,i).getContents(); 
      String s4 = s.getCell(3,i).getContents(); 
      String s5 = s.getCell(4,i).getContents(); 
      String s6 = s.getCell(5,i).getContents(); 

      driver.findElement(By.xpath("html/body/div[2]/form/input[1]")).sendKeys(s1); 
      Thread.sleep(2000); 
      driver.findElement(By.xpath("html/body/div[2]/form/input[2]")).sendKeys(s2); 
      Thread.sleep(2000); 
      driver.findElement(By.xpath("html/body/div[2]/a/span/span/span")).click(); 
      Thread.sleep(2000); 
      Assert.assertEquals("Testing Hub", driver.findElement(By.xpath("//*[@id='app-banner']/div[1]/div/h2")).getText()); 
      Thread.sleep(2000); 
      driver.findElement(By.xpath("html/body/div[1]/div[4]/div[1]/div[4]/div/div[2]/div/div/div/span[1]")).click(); 
      Thread.sleep(2000);   
      driver.findElement(By.xpath("html/body/div[1]/div[4]/div[3]/div[2]/div[3]/div[3]/div[1]/div/div[2]/div/div/div/span/span/span/span[2]")).click(); 
      Thread.sleep(1000);   
      driver.findElement(By.xpath("html/body/div[4]/table/tbody/tr[2]/td[2]")).click(); 
      Thread.sleep(2000);  
      driver.switchTo().frame("iframe-curam_ModalDialog_0"); 
      Thread.sleep(1000); 
      driver.findElement(By.xpath("//*[@id='__o3id0']")).sendKeys(s3); 
      Thread.sleep(1000); 
      driver.findElement(By.xpath("html/body/div[3]/form/div/div[5]/a[1]/span/span/span")).click(); 
      Thread.sleep(1000); 
      Assert.assertEquals("There are no matching items based on the Search Criteria entered.", driver.findElement(By.xpath("html/body/div[3]/div/ul/li/div")).getText()); 
      Thread.sleep(1000);   
      driver.findElement(By.xpath("html/body/div[4]/div[2]/a/span/span/span")).click(); 
      Thread.sleep(2000);   
      driver.findElement(By.xpath("html/body/div[3]/form/div/div[2]/div/table/tbody/tr[1]/td[1]/input")).sendKeys(s4); 
      Thread.sleep(1000);   
      driver.findElement(By.xpath("html/body/div[3]/form/div/div[2]/div/table/tbody/tr[2]/td[1]/input")).sendKeys(s5); 
      Thread.sleep(1000); 
      new Select(driver.findElement(By.id("___o3id7"))).selectByValue(s6); 
      Thread.sleep(2000); 

      }  
      } 
      catch(Exception e) 
      { 
      System.out.println(e); 

      } 
      } 
} 
+0

Der Eingabetyp ist Text. Sind Sie sicher, dass es sich um ein ausgewähltes Element handelt? Auch es hat readonly Eigenschaft zu wahr, so nicht sicher, ob Sie etwas aktualisieren können ... – kurakura88

+0

Ich kann send key für Eingabe-Typ verwenden, aber ich möchte auch Dropdown-Wert verwenden, indem Sie aus Excel-Tabelle lesen. So hat es sowohl Fähigkeitseingabewert in dem Feld als auch einen Wert aus dem Dropdown. – Curious

+0

Hi Neugierig, wann erscheint der Wert 'Weiblich'. Ich schätze beim Klicken auf das Dropdown-Feld wird der Wert 'Weiblich' angezeigt. Habe ich recht?? –

Antwort

0

Da Sie in dem Code eingefügt keinen Select-Tag ist, mit select für das Klicken Dropdown wird nicht helfen.

Gemäß Ihrem Testskript und HTML-Code ist der id Wert für das Dropdown anders.

//*[@id='widget___o3id7'] - im XPath verwendet, um Dropdown zu wählen, wo im HTML-Code id = "__o3id7".

Versuchen nach ihnen

Es ist besser, wenn Sie Ihre Benutzeroberfläche teilen sich das Szenario und zu einem Ergebnis kommen


Vielen Dank für die gemeinsame Nutzung der UI und HTML-Code zu verstehen.

driver.findElement(By.id("__o3id7")).click(); 
    Thread.sleep(1500); 
    driver.findElement(By.xpath("//*[contains(text(),'Female')]")).click(); 

Ersetzen Sie Ihre select Anweisung und versuchen Sie diese Codes. Hoffen wir, dass dies "Weiblich" aus Ihrem Drop-Down klicken würde.

+0

Hallo Anand - Ich habe die ID aktualisiert, wie du es vorgeschlagen hast, und ich habe auch Screenshots der Benutzeroberfläche und HTML- und XPath-Informationen im Screenshot bereitgestellt. – Curious

+0

@Curious hat meine Antwort Ihnen geholfen –

+0

Nein, Anand Sie antworteten nicht geholfen. – Curious