2016-01-22 66 views
0

我自動化添加到「http://www.fnp.com/the-sweet-surprises-genpr-143431-e.html」網站的卡過程中進行選擇。我正在使用TestNG結構編寫代碼。我陷入了困在「運送選項」框中的任務。 我在控制檯中獲得空值。 下面是我的TestNG的計劃無法從UI li元素硒的Java

package script; 

    import java.util.Iterator; 
    import java.util.List; 
    import java.util.concurrent.TimeUnit; 
    import org.junit.Test; 
    import org.openqa.selenium.By; 
    import org.openqa.selenium.WebDriver; 
    import org.openqa.selenium.WebElement; 
    import org.openqa.selenium.firefox.FirefoxDriver; 
    import org.openqa.selenium.support.ui.Select; 

    import pom.Homepage_POM; 

    public class mis { 
      public static WebDriver driver; 
     public static void main(String a[]) 
     { 
      driver = new FirefoxDriver(); 
      driver.manage().window().maximize(); 
      driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
        driver.get("http://www.fnp.com/the-sweet-surprises-genpr-143431-e.html"); 

driver.findElement(By.id("tagsf2")).sendKeys("Gandhinagar"); 
    String xp = "//ul/li/a[@class='ui-corner-all']"; 
        List<WebElement> allList = driver.findElements(By.xpath(xp)); 
        int count = allList.size(); 
            for (int i = 0; i < count ; i++) 
        { 
         String name = allList.get(i).getText(); 
         //System.out.println(name); 
         if(name.contains("Gandhinagar")) 
         { 
          allList.get(i).click(); 
          break; 
         } 

       } 
        List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='ddShipingModep1_container']/ul/li")); 
      for (int i = 0; i < allElements.size() ; i++) 
         { 
           String name2 = allElements.get(i).getText(); 
          System.out.println(name2); 
          if(name2.contains("Standard Delivery [ Rs. 0 ]")) 
           { 
            allElements.get(i).click(); 
            break; 
           } 

下面是HTML代碼

<div class="textbox"> 
<div id="plsenter" style="display:none">Only standard delivery available for Mother's Day</div> 
<div id="anand" class="pro_detail_form_inn flot-right"> 
<label>2. Shipping option</label> 
<input id="ddShipingModep1_input" class="selectbox" type="text" autocomplete="off" readonly="readonly"/> 
<div id="ddShipingModep1_container" class="selectbox-wrapper" style="display: none; width: 274px;"> 
<ul> 
<li id="ddShipingModep1_input_option1" class="">Select Shipping Mode</li> 
<li id="ddShipingModep1_input_SHMD-10" class="">Standard Delivery [ Rs. 0 ]</li> 
<li id="ddShipingModep1_input_SHMD-768" class="selected">Fix Time Delivery [ Rs. 200 ]</li> 
<li id="ddShipingModep1_input_SHMD-781">Midnight Delivery [ Rs. 250 ]</li> 
</ul> 
</div> 
<select id="ddShipingModep1" class="inp_pop_quick_view" onchange="changeShipmentTime()" name="Items" style="display: none;"> 
<input id="valentineDisabled" type="hidden" value="false"/> 
<input id="isValentinerose" type="hidden" value="false"/> 
</div> 
+0

粘貼您的控制檯日誌 –

+0

@niharika_neo控制檯顯示爲空。你可以直接運行這個代碼 –

回答

0

你必須點擊<input id="ddShipingModep1_input"兩次,然後選項會顯示出來。請參見下面的代碼:

... 
WebElement selectShippingModeInput = driver.findElement(By.id("ddShipingModep1_input")); 
selectShippingModeInput.click();   
selectShippingModeInput = driver.findElement(By.id("ddShipingModep1_input")); 
selectShippingModeInput.click(); 
try { 
    Thread.sleep(1000); 
} catch (InterruptedException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='ddShipingModep1_container']/ul/li")); 
... 
1
WebDriver driver=new FirefoxDriver(); 

driver.manage().window().maximize(); 
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
driver.get("http://www.fnp.com/the-sweet-surprises-genpr-143431-e.html"); 
driver.findElement(By.id("tagsf2")).sendKeys("Gandhinagar"); 

/*下面三行代碼是從下拉框城市名稱*/

WebElement selectShippingModeInput = driver.findElement(By.id("ddShipingModep1_input")); 
selectShippingModeInput.click();  
selectShippingModeInput = driver.findElement(By.id("ddShipingModep1_input")); 
selectShippingModeInput.click(); 

/*下面選擇選項「甘地」代碼 獲取從下拉框中的所有選項「送貨選項」 */

List<WebElement>  options=driver.findElements(By.xpath("//div[@id='ddShipingModep1_container']/ul/li")); 
for(WebElement option:options){ 

/*下面的代碼F蝕刻下拉項*/

String name=option.getText(); 

/下面兩個線路代碼的文本是集中選擇框/

selectShippingModeInput = driver.findElement(By.id("ddShipingModep1_input"));  
    selectShippingModeInput.click(); 

/*向下掉落物品「標準交付[盧比。 0]從下拉框中選擇*/

if(name.equals("Standard Delivery [ Rs. 0 ]")){ 
       selectShippingModeInput.click(); 
       option.click(); 
       break; 

              } 
         } 
+0

歡迎來到StackOverflow!添加一些解釋你的代碼如何解決這個問題可能會有所幫助。 –