【问题标题】:Select a random element from a list in Selenium Webdriver Java从 Selenium Webdriver Java 的列表中选择一个随机元素
【发布时间】:2017-05-11 05:10:21
【问题描述】:

我有一个调用 chrome 驱动程序的代码,然后转到 footlocker 的网站。打开 footlocker 的网站后,它会找到并点击 Mens 按钮。然后它会遍历 men 下的产品列表并随机选择一个。我遇到的问题是它每次都选择相同的产品。这是我的代码。选择随机产品的方法在selectRandomProduct下

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();
}

}

【问题讨论】:

  • 您能提供一个指向footlocker 网站的链接吗?他们似乎对不同的国家有不同的页面布局。同时,您能检查一下 allProducts.size() > 1 吗?
  • 确定我使用的网站是针对加拿大的。 footlocker.ca。我将如何进行检查以查看 allProducts.size() 是否>1?我对 Selenium 还很陌生。

标签: java selenium selenium-webdriver selenium-chromedriver selenium-ide


【解决方案1】:

我查看了网站,发现您的 xpath (//*[@id='endecaResultsWrapper']/div[3]) 选择了包含所有图像的整个 div。所以基本上,当你点击一个随机元素时,它只会找到一个(主 div)。如果您想点击 60 种产品中的一种,您应该尝试这样的操作://*[@id='endecaResultsWrapper']/div[3]//img

【讨论】:

  • 非常感谢!这似乎已经解决了问题,现在每次都选择不同的产品。再次感谢您。
猜你喜欢
  • 2023-01-11
  • 2012-01-12
  • 2011-05-29
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多