0

私はchrome driverを呼び出し、footlockerのWebサイトに行きます。 Footlockerのウェブサイトを開いた後、Mensボタンを見つけてクリックします。その後、男性の下の製品のリストを通り、ランダムに1つを選択します。私が抱えている問題は、毎回同じ製品を選ぶということです。ここに私のコードです。ランダムな製品を選択するための方法は、selectRandomProductSelenium Webdriverのリストからランダムな要素を選択してください。Java

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 random product is " + productName + " and it's cost is " + Price + "."); 

    // Execute new method 
    productTwo(); 
} 

public void productTwo(){ 

    // Go back a browser page 
    driver.navigate().back(); 
    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 random product is " + productName + " and it's cost is " + Price + "."); 
} 

public void selectRandomProduct(){ 

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

public static void main(String[] args) { 

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

}

+1

フットロックのウェブサイトへのリンクを提供できますか?彼らはさまざまな国のために異なるページレイアウトを持っているようです。その間、allProducts.size()> 1を確認してください。 – oschlueter

+0

私が使用しているウェブサイトはカナダ向けです。 http://www.footlocker.ca/ allProducts.size()が> 1かどうかをチェックするにはどうすればよいですか?私はかなりセレンに新しいです。 –

答えて

1

私はウェブサイトを見て、私はあなたのXPath(//*[@id='endecaResultsWrapper']/div[3])は、すべての画像があり、全体のdivを選択したことが分かっ下にあります。したがって、基本的に、ランダムな要素をクリックすると、それは1つの要素(メインdiv)のみを検出します。 60個の製品のいずれかをクリックする場合は、//*[@id='endecaResultsWrapper']/div[3]//imgのようなものを試してください。

+0

ありがとうございました!それは問題を修正したように見え、毎回異なる製品を選んでいます。もう一度ありがとうございます。 –

+0

あなたは大歓迎です:) –

関連する問題