0

これは私のコードが行うことです。 (1.)クロームブラウザを開き、footlocker.caにアクセス (2.)メンズボタン (3.)60 (4)のリストから1つのランダムな商品を選択してください。製品名と価格を印刷してください (8.)選択した製品(avaSizes)のすべての使用可能なサイズを印刷します (6.)製品ページに戻る (7.)60 のリストから2番目のランダムな製品を選択します(10)クロムブラウザを閉じますリスト内のすべての有効なアイテムを印刷します

私の問題は、製品の利用可能なサイズを読み取ることができないということです。私は自分の問題がXPathであると思うが、私はさまざまなXPathを使っているので、問題である私のコードかもしれないので、私は確信していない。このメソッドは(avaSizes)と呼ばれます。誰かがそれを助けることができれば、それは素晴らしいだろう。私は練習のためにこれをやっているので、誰かがこのコードに追加できるリアルタイムのジョブシナリオのテストケースを持っているなら、それは私に多くの助けになるでしょう。ありがとう。

public class FootlockerExample { 

WebElement next; 
WebDriver driver = new ChromeDriver(); 

public void productOne(){ 

    // Open Chrome Browser 
    System.setProperty("webdriver.chrome.driver", "C:\\Users\\Working\\Workspace\\SeleniumProject\\chromedriver.exe"); 

    // Open Footlocker website and maximize window 
    driver.get("http://www.footlocker.ca/"); 
    driver.manage().window().maximize(); 

    // Find button element 'Mens' and click 
    next = driver.findElement(By.xpath("//*[@id='global-nav']/ul/li[1]/a")); 
    next.click(); 

    // Select a random product 
    selectRandomProduct(); 

    // Print out the product name and price 
    String productName = driver.findElement(By.xpath("//*[@id='product_form']/div/span[2]/div/div[1]")).getText(); 
    String Price = driver.findElement(By.xpath("//*[@id='product_form']/div/span[2]/div/div[2]")).getText(); 
    System.out.println("The 1st randomly selected product is " + productName + " and it's cost is " + Price + "."); 

    // Print all available product sizes 
    avaSizes(); 

    // Execute new method 
    productTwo(); 
} 

public void productTwo(){ 

    // Go back a browser page 
    driver.navigate().back(); 

    // Select a new random product 
    selectRandomProduct(); 

    // Print out the product name and price 
    String productName = driver.findElement(By.xpath("//*[@id='product_form']/div/span[2]/div/div[1]")).getText(); 
    String Price = driver.findElement(By.xpath("//*[@id='product_form']/div/span[2]/div/div[2]")).getText(); 
    System.out.println("The 2nd randomly selected product is " + productName + " and it's cost is " + Price + "."); 

    // Print all available product sizes 
    avaSizes(); 

    driver.close(); 
} 

public void selectRandomProduct(){ 

    // Find and click on a random product 
    List<WebElement> allProducts = driver.findElements(By.xpath("//*[@id='endecaResultsWrapper']/div[3]//img")); 
    Random rand = new Random(); 
    int randomProduct = rand.nextInt(allProducts.size()); 
    allProducts.get(randomProduct).click(); 
} 

public void avaSizes(){ 

    // Find all the available shoe sizes for each randomly selected product 
    List<WebElement> avaSizes = driver.findElements(By.xpath("//*[@id='product_sizes']")); 
    int totalSizes = 0; 
    for(int i=0; i<avaSizes.size(); i++){ 
     if(avaSizes.get(i).isEnabled()==true){ 
      avaSizes.get(i).getText(); 
      System.out.println(avaSizes); 
      totalSizes++; 
     }else{ 
      System.out.println("Out of stock in all sizes."); 
     } 
    } 
    System.out.println("This product is available in: " + totalSizes + " sizes."); 
} 

public static void main(String[] args) { 

    FootlockerExample obj1 = new FootlockerExample(); 
    obj1.productOne(); 
} 

}

+0

あなたはHTMLコードを投稿できますか? –

+0

@ShubhasmitGupta Marius D.の助けを借りて問題を修正しました。自分のロジックを自分のロジックに加えました。しかし、お手伝いをしてくれてありがとう。 –

答えて

1

をマリウスDから少し助けを借りて上記の、私はこの問題を考え出したし、私のコードを修正しました。 誰かが同じ問題を抱えている場合の将来のための私の固定答えです。

public void avaSizes(){ 
    Select select = new Select(driver.findElement(By.id("product_sizes"))); 
    // Find all the available shoe sizes for each randomly selected product 
    List<WebElement> avaSizes = select.getOptions(); 
    int totalSizes = 0; 
    for(WebElement size:avaSizes){ 
     if(size.isEnabled()==true){ 
      System.out.println(size.getText()); 
      totalSizes++; 
      }else{ 
       System.out.println("Out of stock in " + size.getText()); 
       } 
     } 
    System.out.println("This product is available in: " + totalSizes + " sizes."); 
} 
4

私はドロップダウン要素はIDを有しており、選択型であることがわかります。 あなたはそれがSelectオブジェクトを使用して作業することができます:

Select select = new Select(driver.findElement(By.id("product_sizes")));  
List<WebElement> availableSizes = select.getOptions(); 

    for (WebElement size : availableSizes) { 
     System.out.println(size.getText()); 
    } 
+0

有効になっているサイズのみを印刷する必要があります。 ShoeAにはサイズ9,10,11,12,13がありますが、それは10、12の場合にのみ利用可能です。したがって、Selectタグの下にすべてのオプションを表示する代わりに10,12を印刷する必要があります。私がこのコードで見ることから、それはすべてのサイズを出力し、オプションが無効であるかどうかを考慮しません。 –

関連する問題