2014-03-31 96 views
0

我有一個場景,我必須選擇一個行業,並根據行業選擇我必須選擇一個類別和基於類別我必須選擇分銷商。使用硒參數化選擇選項

雖然我能夠選擇行業和類別,我無法選擇我的分銷商。我已經傳入了參數。

我的JUnit代碼

@RunWith(Parameterized.class) 
    public class test2 { 

     WebDriver driver; 
     private String email; 
     private String pdesc; 
     private String pass; 
     private String ind; 
     private String cat; 
     private String dis; 
     private String pname; 
     private String at1; 
     private String atv1; 
     private String img; 

     public test2(String emailid, String password,String industry, String cate, 
         String dist, String productname, String productdesc, 
          String attname, String attvalue,String uploadimg){ 
     this.email = emailid; 
     this.pass = password; 
     this.ind = industry; 
     this.cat = cate; 
     this.dis =dist; 
     this.pname = productname; 
     this.pdesc = productdesc; 
     this.at1 = attname; 
     this.atv1 = attvalue; 
     this.img = uploadimg; 
      } 


    @Parameters 
    public static Collection<Object[]>data(){  
    Object[][] data = new Object[][] 
    { {"user1","user1","Industry1","category1","distributor","product name", 
    "product description","price","Rs. 1,50,000","Lighthouse.jpg" } }; 

     return Arrays.asList(data); 
    } 

    @Before 
    public void setUp(){ 
    driver = new FirefoxDriver(); 
    driver.manage().window().maximize(); 
    } 

    @After 
    public void tearDown(){ 
    driver.quit(); 
    } 


@Test 
    public void testFindElements()throws Exception{ 
    driver.get("http://domain.com"); 
    Thread.sleep(500); 

    *****Login with username and password****** 

    WebElement em = driver.findElement(By.id("email_id")); 
    em.sendKeys(email); 
    WebElement pwd = driver.findElement(By.id("password")); 
    pwd.sendKeys(pass); 
    Thread.sleep(500); 
    driver.findElement(By.xpath("//button[@type='submit']")).click(); 
    Thread.sleep(500); 

    *******NAVIGATE TO ADD PRODUCT PAGE******* 

    WebElement hover = driver.findElement(By.className("dropdown-toggle")); 
    Actions builder = new Actions(driver); 
    builder.moveToElement(hover).build().perform(); 
    driver .findElement(By.linkText("Add")).click(); 

    ****SELECTING THE INDUSTRY**** 
    new Select(driver.findElement(By.id("ProductIndustryId"))).selectByVisibleText(ind); 

    *****SELECTING THE CATEGORY********* 
    WebElement category = driver.findElement(By.id("ProductCategoryId")); 
    category.sendKeys(cat); 

    ****CLICK ON SELECT DISTRIBUTOR RADIO BUTTON***** 
    driver.findElement(By.cssSelector("div.radio-list > label")).click(); 
    driver.findElement(By.id("seldist")).click(); 
    Thread.sleep(500); 
    Thread.sleep(500); 

    ****SELECTING MY DISTRIBUTOR(JOHN)***** 
    driver.findElement 
    (By.xpath("//html/body/div[3]/div[2]/div/div/form/div[3]/div/div/div/div/div[5]/div/div/div/select/option")).sendKeys(dis); 

    ****ADDING PRODUCT DETAILS**** 

    WebElement prodname = driver.findElement(By.cssSelector("div.col-md-9 > 
    input[name=\"data[Product][product_name]\"]")); 
    prodname.sendKeys(pname); 

    WebElement pd = driver.findElement(By.cssSelector("textarea[name=\"data[Product] 
    [description] rows=\"]")); 
    pd.sendKeys(pdesc); 

    WebElement a1 = driver.findElement(By.name("data[Attribute][0][display_name]")); 
    a1.sendKeys(at1); 

    WebElement av1 = driver.findElement(By.name("data[Attribute][0][product_value]")); 
    av1.sendKeys(atv1); 

    driver.findElement(By.name("data[Product][product_image]")).click(); 
    WebElement upload = driver.findElement(By.name("data[Product][product_image]")); 
    upload.sendKeys(img); 

    driver.findElement(By.cssSelector("div.col-md-offset-3.col-md-9 > 
           button.btn.green")).click(); 

    driver.findElement(By.linkText("Done")).click(); 
     } 
    } 


<select name="data[Product][industry_id]" class="form-control" id="ProductIndustryId"> 
<option value="">-Select Industry-</option> 
<option value="1">Textiles</option> 
<option value="2">Automobiles</option> 
<option value="10">Home Improvement</option> 
</select> 
<select name="data[Product][category_id]" class="form-control" id="ProductCategoryId"> 
</select> 
<label> 
<div class="radio" id="uniform-seldist"><span class="checked"><input type="radio" 
name="data[Product][user_type]" id="seldist" value="A" style="display:inline"> 
</span> 
</div> 
Select distributor</label> 
<div class="input select"> 
<input type="hidden" name="data[Product][distributor_id]" value=""  
    id="ProductDistributorId_"> 
<select name="data[Product][distributor_id][]" class="form-control" multiple="multiple" 
    id="ProductDistributorId"> 
</select></div> 

注:我無法選擇參數傳遞的分銷商。但選擇其他經銷商。例如:經銷商名單是約翰,丹尼斯,凱蒂。

我已經通過了約翰是我的分銷商,但它選擇凱蒂

+0

粘貼HTML代碼。明確哪些代碼行用於什麼目的。 – Manigandan

+0

您提到了從列表中選擇分銷商。但是你使用了一個動作'SendKeys'。這是一個錯字錯誤嗎? – Manigandan

+0

那麼怎麼可能選擇特定的分銷商@Manigandan其實我可以使用sendKeys從列表中選擇行業和類別,但分銷商無法選擇 – user3181335

回答

0

@ user3181335我在寫這個的答案,因爲我沒有足夠的代表處點發表評論。在每次執行操作後嘗試包括一些JUnit斷言。這將幫助您識別可能會錯過的錯誤,例如Katie被選中的情況,而不是John。

WebElement selectDistributor = driver.findElement(By.xpath("//html/body/div[3]/div[2]/div/div/form/div[3]/div/div/div/div/div[5]/div/div/div/select/option")).sendKeys(dis); 

//this is an example without seeing the HTML code 
Assert.assertEquals("Expecting my distributor to be John", selectDistributor.getValue("john");