Я работаю над автоматизацией браузера (Java + селен).Я нахожусь на странице продуктов в интернет-магазине, и у меня есть немного кода, который нажимает на ссылку случайного продукта, поэтому браузер выбирает случайный продукт.Это работает, однако, когда я возвращаюсь на ту же страницу и использую тот же код для повторного нажатия на случайную ссылку, это просто не работает.Я не вижу никакой причины для этого, кто-то может помочь?Код здесь:
package com.testing.webdriver;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.junit.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import javax.swing.*;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import java.util.List;
public class MyFirstTest {
WebDriver driver = new ChromeDriver();
@BeforeClass
public static void setupWebdriver() {
WebDriverManager.chromedriver().setup();
}
private static final By ABOUT_US_BUTTON = By.cssSelector("body > nav > ul.main-navigation > li:nth-child(2) > a");
private static final By RT_SEARCH_BAR = By.cssSelector("#header > div.header__section.header__section_border-bottom_gray > div > div.header__seach-form > form > div > span > input");
private static final By SHOP_BY_DEPARTMENT = By.cssSelector("#nav-link-shopall");
private static final By SHOP_ALL = By.cssSelector("#nav-flyout-shopAll > div.nav-template.nav-flyout-content.nav-tpl-itemList > a");
private static final By RANDOM_PRODUCT = By.cssSelector("#amshopby-page-container > div.category-products > div.products > ul > li");
private static final By NATIONAL_NAV_BUTTON = By.cssSelector("#nav-3 > a");
@Test
public void startWebdriver() throws InterruptedException {
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.navigate().to("http://seleniumsimplified.com");
driver.manage().window().maximize();
Actions action = new Actions(driver);
driver.navigate().to("https://www.classicfootballshirts.co.uk/");
WebElement nationalNavButton = driver.findElement(NATIONAL_NAV_BUTTON);
action.moveToElement(nationalNavButton).perform();
Thread.sleep(2000);
WebElement belgiumDropDown = driver.findElement(By.linkText("Belgium"));
action.moveToElement(belgiumDropDown);
action.click();
action.perform();
Assert.assertTrue("matches current url",
driver.getCurrentUrl().matches("https://www.classicfootballshirts.co.uk/international-teams/european/belgium.html"));
List<WebElement> links = driver.findElements(By.cssSelector("#amshopby-page-container > div.category-products > div.products > ul > li > div > h2 > a"));
links.get(new Random().nextInt(links.size())).click();
Thread.sleep(2000);
driver.navigate().back();
Thread.sleep(2000);
links.get(new Random().nextInt(links.size())).click();
Thread.sleep(2000);
Я попытался вернуться к предыдущему URL-адресу напрямую, но это тоже не работает.Если неясно, что проблема со вторым экземпляром:
links.get(new Random().nextInt(links.size())).click();