0

크롬 드라이버를 호출 한 다음 Footlocker의 웹 사이트로 이동하는 코드가 있습니다. Footlocker의 웹 사이트를 열면 Mens 버튼을 찾아 클릭합니다. 그런 다음 남성용 제품 목록을 살펴보고 무작위로 제품을 선택합니다. 내가 가지고있는 문제는 매번 동일한 제품을 선택한다는 것입니다. 여기 내 코드가있다. 임의의 제품을 선택하는 방법은 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

Footlocker 웹 사이트에 대한 링크를 제공 할 수 있습니까? 그들은 여러 나라마다 다른 페이지 레이아웃을 가지고있는 것 같습니다. 그동안, allProducts.size()> 1을 확인해 주시겠습니까? – oschlueter

+0

내가 사용하는 웹 사이트는 캐나다를위한 것입니다. http://www.footlocker.ca/. allProducts.size()가> 1인지 확인하려면 어떻게해야합니까? 나는 Selenium에 상당히 익숙하다. –

답변

1

나는 웹 사이트에서 보면서 나는 당신의 XPath는 (//*[@id='endecaResultsWrapper']/div[3]가) 모든 이미지가 전체 사업부를 선택하는 발견을 받고있다. 따라서 기본적으로 임의의 요소를 클릭하면 하나의 요소 만 찾습니다 (기본 div). 60 개 제품 중 하나를 클릭하려면 //*[@id='endecaResultsWrapper']/div[3]//img과 같은 것을 시도해야합니다.

+0

정말 고마워요! 문제가 해결 된 것 같아서 매번 다른 제품을 선택하고 있습니다. 다시 한 번 감사드립니다. –

+0

당신은 환영합니다 :) –

관련 문제