2016-01-22 63 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!添加一些解释你的代码如何解决这个问题可能会有所帮助。 –