Это то, что делает мой код. (1.) Откройте браузер Chrome и зайдите на footlocker.ca (2.) Нажмите на кнопку Mens (3.) Выберите 1 случайное изделие из списка 60 (4.) Распечатать название и цену (5.) Распечатайте все доступные размеры для выбранного продукта (avaSizes) (6.) Вернитесь на страницу продуктов (7.) Выберите 2-й случайный товар из списка 60 (8) Распечатай название продукта и цена (9.) Печатать все доступные размеры для выбранного продукта (avaSizes) (10.) Закрыть chrome browserРаспечатать все включенные элементы в списке
Моя проблема в том, что он не может прочитать доступные размеры для продукта. Я думаю, что моя проблема в 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();
}
}
Вы можете оставлять HTML-код. –
@ShubhasmitGupta Я исправил проблему с помощью Marius D. Добавил свой код в свою логику, и он работает. Спасибо, однако, за помощь. –