Я запускаю автоматический тест в selenium / intelliJ / Java. Веб-драйвер должен щелкнуть раскрывающееся меню на панели навигации Amazon, а затем щелкнуть одну из ссылок в раскрывающемся меню. Он делает обе эти вещи правильно, выпадающий вариант ведет к его ссылке, однако сам тест селена не проходит, вот ошибка:
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"link text","selector":"Full Shop Directory"}
и вот мой код:
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 java.util.Random;
import java.util.concurrent.TimeUnit;
public class MyFirstTest {
WebDriver driver = new ChromeDriver();
@BeforeClass
public static void setupWebdriver() {
WebDriverManager.chromedriver().setup();
}
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");
@Test
public void startWebdriver() {
driver.navigate().to("https://www.amazon.co.uk/");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
WebElement shopByDepartment = driver.findElement(SHOP_BY_DEPARTMENT);
shopByDepartment.click();
WebElement ShopAllNav = driver.findElement(By.linkText("Full Shop Directory"));
ShopAllNav.click();
Assert.assertTrue("matches current url",
driver.getCurrentUrl().matches("https://www.amazon.co.uk/gp/site-directory/ref=nav_shopall_fullstore"));
}
@After
public void breakdown() throws InterruptedException {
Thread.sleep(20000);
driver.close();
}
Тест должен пройти, поскольку он делает то, что я говорю. Я предполагаю, что это связано с тем, что ссылка находится в выпадающем меню, как говорит ошибка, но я до сих пор не знаю, как бы это исправить. Любая помощь будет оценена, спасибо.