Как щелкнуть по элементу, который виден после наведения курсора мыши на элемент внутри ebay.com использование Selenium и Java

#java #selenium #selenium-webdriver #webdriver #webdriverwait

#java #селен #selenium-webdriver #webdriver #webdriverwait

Вопрос:

Я пытаюсь изучить selenium с Java, используя ebay.com. Я обнаружил сложный элемент для выбора элемента после наведения курсора мыши. Вот мой фрагмент кода

 driver.findElement(By.xpath("//a[contains(text(),'Tennis')]")).click()
  

Однако приведенный выше код возвращает ошибку, элемент не доступен для взаимодействия

Я добавил Thread.sleep(60000) раньше driver.findElement и все еще не могу щелкнуть

вот окно, которое я хотел щелкнуть

введите описание изображения здесь

Комментарии:

1. Попробуйте более конкретный xpath и проверьте, что вы можете щелкнуть по чему угодно. Например, найдите элемент с id на ebay и посмотрите, сможете ли вы щелкнуть по нему. Если вы можете, то вы знаете, что проблема в вашем селекторе xpath.

Ответ №1:

Наведите курсор на спортивное меню с помощью Actions и, когда откроется меню, перейдите в подменю Теннис. Чтобы дождаться, пока теннис станет интерактивным, используйте WebDriverWait :

 WebDriverWait wait = new WebDriverWait(driver, 5);
Actions actions = new Actions(driver);

driver.get("https://www.ebay.com");

WebElement sports = driver.findElement(By.linkText("Sports"));

actions.moveToElement(sports).perform();
wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Tennis"))).click();
  

Ответ №2:

Вам нужно навести указатель мыши на элемент с текстом в виде «Спорт» и дождаться elementToBeClickable() текста в виде «Теннис«, и вы можете использовать следующее решение:

  • Блок кода:

     System.setProperty("webdriver.chrome.driver", "C:\Utility\BrowserDrivers\chromedriver.exe");
    ChromeOptions options = new ChromeOptions();
    options.addArguments("start-maximized");
    options.addArguments("--disable-extensions");
    //options.addArguments("disable-infobars");
    WebDriver driver = new ChromeDriver(options);
    driver.get("https://www.ebay.com/");
    new Actions(driver).moveToElement(new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Sports")))).perform();
    new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[text()='Sports']//following::div[@class='hl-cat-nav__flyout']//span[text()='Other Categories']//following::ul[1]/li/a[normalize-space()='Tennis']"))).click();
      
  • Снимок браузера:

ebay